global变量不一定有extern修饰,而有extern修饰的必然是global变量
全局变量
在所有函数外部定义的变量称为全局变量(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() 内都有效。
extern
#include <stdio.h>extern int z;int main(){printf("%d\n", z);return 0;}
