global变量不一定有extern修饰,而有extern修饰的必然是global变量

全局变量

在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。例如:

  1. int a, b; //全局变量
  2. void func1(){
  3. //TODO:
  4. }
  5. float x,y; //全局变量
  6. int func2(){
  7. //TODO:
  8. }
  9. int main(){
  10. //TODO:
  11. return 0;
  12. }

a、b、x、y 都是在函数外部定义的全局变量。C语言代码是从前往后依次执行的,由于 x、y 定义在函数 func1() 之后,所以在 func1() 内无效;而 a、b 定义在源程序的开头,所以在 func1()、func2() 和 main() 内都有效。

extern

  1. #include <stdio.h>
  2. extern int z;
  3. int main()
  4. {
  5. printf("%d\n", z);
  6. return 0;
  7. }