在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。
例如:
int a, b //全局变量
void func1( )
{
//TODO:
}
float x,y //全局变量
int func2( )
{
//TODO:
}
int main( )
{
//TODO:
return 0
}
a、b、x、y 都是在函数外部定义的全局变量。C语言代码是从前往后依次执行的,由于 x、y 定义在函数 func1() 之后,所以在 func1() 内无效;而 a、b 定义在源程序的开头,所以在 func1()、func2() 和 main() 内都有效。
定义在函数体外部的变量叫全局变量,
要定义全局变量你只要把变量定义在
所有函数外部即可。
要注意的是,全局变量只对它定义位
置以下的函数可见。
#include<stdio.h>void f1()
void f2()
int y=100
int main()
{
printf("%d\n\n",y)
//printf("%d\n",x)这不可以读x,x对main()不可见
f1()
f2()
return 0
}
int x
void f1()
{
x=200
}
void f2()
{
printf("%d\n",x)
printf("%d\n",y)
}
1、记住一条就够了:在函数之外定义的变量就是全局变量。用static修饰的变量可以是全局的,也可以是局部的,所以说“用static修饰的变量是全局变量”是错误的。用static修饰的变量的生命周期与全局变量一样,但可见性仍分全局和局部。2、全局变量在整个c文件中都能使用,而局部变量在其作用域内才能使用,举个例子:
int f = 7// 这个是全局变量
int myadd(int a, int b)
{
int c = a + b// c是局部变量,只能在myadd中使用
return c
}
int main(void)
{
printf("%d\n", c)// 因为c是myadd中定义的局部变量,这里会报错。
printf("%d\n", f)// f是全局变量,这句是正确的。
}