全局变量

一.概述

          全局变量也称为 外部变量 ,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明

  1.定义:在函数外面定义的变量

  2.作用域:从定义变量的那一行到文件结尾

  3.生命周期;程序启动分配存储空间到结束销毁

  4.默认的初始值为0

1>结构体

可以由多个不同类型的数据构成

定义结构体类型

struct Student    //声明一个结构体类型Student
{
int num;/            /包括一个整型变量num
char name[20];//包括一个字符数组name,可以容纳20个字符
char sex;          //包括一个字符变量sex
int age;            //包括一个整型变量age 
float score;      //包括一个单精度型变量
char addr[30]; //包括一个字符数组addr,可以容纳30个字符
};

这样, 程序设计 者就声明了一个新的结构体类型Student(struct是声明结构体类型时所必须使用的 关键字 ,不能省略),它向 编译系统 声明: 这是一种结构体类型,它包括num, name, sex, age, score, addr等不同类型的数据项。应当说明Student是一个 类型名 ,它和系统提供的标准类型(如int、char、float、double 一样,都可以用来定义变量。

                                                                                        2>定义结构体的三种方式

1.先定义类型再定义变量

struct student;
{
int age;
}
struct student stu;

2.定义类型的同时定义变量

truct student stu;
{
int age;
}stu;
struct student stu2;

3. 定义类型的同时定义变量(省略类型名称)

struct
{
int age;
}stu;
<span style="background-color: rgb(255, 255, 255);">                                                                                                   3>定义结构体数组</span>

1.结构体可以由多个不同的数据类型构成

定义结构体类型

struct person
int age;
double height;
char *name

2.根据结构体类型定义结构体变量

struct person p ={20,1.55,"jack"};
p age = 30;
p name =- "rose";

补齐算法     结构体所占用的存储空间必须是最大成员字节数的倍数

struct student
{
int age;
char *name;
}
struct student stu;
stu age = 20;
stu name ="jack";

3.定义结构体类型,利用新定义好的类型来定义结构体变量

struct student
{
int age;
double height;
char *name;
}stu
struct student sstu

定义结构体 数组 和定义结构体 变量 的方法相仿,定义结构体数组时只需声明其为数组即可。如 struct Student//声明结构体类型Student 

{ int num; 
char name[20]; 
char sex; 
int age; 
float score; 
char addr[30]; 
}; 
Student stu[3];

也可以直接定义一个结构体数组,如

struct Student 
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu[3];

struct
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}stu[3];

结构体数组的初始化与其他类型的数组一样,对结构体数组可以初始化。如

struct Student 
{
int num; 
char name[20]; 
char sex;
int age; 
float score; 
char addr[30]; 
}stu[3]={
{10101,″Li Lin″, ′M′, 18,87.5, ″103 Beijing Road″}, 
{10102,″Zhang Fun″,′M′,19,99, ″130 Shanghai Road″}, 
{10104,″Wang Min″,′F′, 20,78.5, ″1010 Zhongshan Road″}};

                                                                                                   4>extern作用

1.extern对变量的作用

声明一个外部变量

2.对函数的作用

定义和声明一个外部函数(可省略)

static对变量的作用

1定义一个内部变量

对函数的作用

定义和声明一个内部函数

1结构体变量

struct student stu = {1;10};

第一种方式

<pre name="code" class="csharp">printf("age=%d,no=%d\n",stu,age,no);

printf("age=%d,no=%d\n",*p,age,(*p)no);

printf("age=%d,no=%d\n",p→age,p→no);

在内部变量中内部变量只能被本文件访问,不能被其他文件访问。

外部变量,定义的变量能被本文件和其他文件访问

不同文件中的同名内部变量互不影响