标签:的区别 包含 类型 全局 系统 ext col 出错 extern
答案是:可以的,全局变量默认是extern的,函数也是。如果你写了static修饰它就不行了
下面是各个概念:
全局变量:
全局变量具有全局作用域。,它只编译期被始化一次,它不能用变量来初始化。全局变量只需要在一个源文件中定义,就可以作用于所有的源文件。在其他不包含全局变量定义的源文件中需要用extern关键词来再次声明这个全局变量
例如在单个.c文件中
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就是全局变量。在有的时候,项目是进行划分的,会有不同个.c文件的出现,如果在不同.c中出现例如变量a、b这样的变量,
局部变量:
局部变量只有局部作用域,它只在函数调用执行期间存在,函数一次调用执行结束后,变量被撤销,其所占用的的内存也被回收
例如:
int f1(int a){ int b,c; //a,b,c仅在函数f1()内有效 return a+b+c; } int main(){ int m,n; //m,n仅在函数main()内有效 return 0; }
静态全局变量:
静态全局变量具有全局作用域,,它只编译期被始化一次,它不能用变量来初始化。它作用于定义它的文件里,不能作用到其它的文件里。这样即使多个不同的源文件定义了同名的静态全局变量,他们也是不同的变量。
静态局部变量:
静态局部变量只有局部作用域,它只编译期被始化一次,它不能用变量来初始化。在它初始化之后便一直存在,直到程序运行结束。它与全局变量的区别是:全局变量是对所有的函数是可见的,而静态局部变量只对定义自己的函数体始终可见。
宏:
分配内存空间:
分配内存空间:
局部变量分配在栈空间;
全局变量、静态变量都分配在静态存储区;
宏不分配内存空间
标签:的区别 包含 类型 全局 系统 ext col 出错 extern
原文地址:https://www.cnblogs.com/liangbo-1024/p/9239204.html