版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23274715/article/details/75208473
全局变量的存储类型
在函数外部定义的变量是全局变量,它的作用域是从变量的定义点开始,到本程序文件的末尾。全局变量分为两种:1.extern声明的变量 2.static声明的变量。 当未对全局变量指定存储类别时,隐含为extern类别。用extern和static声明的全局变量都是静态存储方式(存放在静态存储区),都是在编译时分配内存的。
1.extern声明的全局变量
用extern声明的全局变量,可以扩展到全局变量的作用域。如果全局变量不是在文件的开头定义,其有效作用范围时从变量的定义点到程序文件的结束。如果在定义 点之前的函数想用该全局变量,则应该再引用之前用关键字extern对该变量做“外部变量声明”,表示该变量是一个已经定义的全局变量。这样就可以从声明处起合法的使用该全局变量。例:
#include <stdio.h>
void fun(void)
{
extern int x,y;
Int a= 15,b=10;
x += a + b;
y += a - b;
}
int x,y;
void main(void)
{
Int a= 8,b=5;
x = a + b;
y = a - b;
fun();
printf("%d,%d",x,y);
}
result: 38,8
如果在一个程序包含两个文件,在两个文件中都要用到同一个全局变量Flag,不能分别在两个文件中各自定义一个全局变量Flag,否则在进行程序连接时会出现“重复定义”的错误。正确的做法是:在任意一个文件中定义全局变量Flag,而在另一个文件中通过语句“extern Flag;”来声明。这样就可以正常使用了。
- static声明的全局变量
当程序设计时某些全局变量只限于被本文件使用,而不能被其他文件使用,这是就可以在定义全局变量时加static声明。
#include <stdio,h>
static int A;
void fun(void)
{
…………
}