1、变量可以分为全局变量、静态全局变量、静态局部变量和局部变量
按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区
按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
2、从链接器的角度来说,静态变量与全局变量是不一样的。
静态变量的语义是指该变量的链接范围仅在本编译单元(本实现文件中)有效,即只有同一文件中的其它语句才能引用该静态变量,而对其它编译单元是不可见的。
而全局变量的语义是指该变量可以拥有外部链接(相对于静态变量的内部链接而言),即其它文件使用extern关键字进行变量声明后,可以引用到别的编译单元中的全局变量。
至于它们的生存期,则是一样的,而它们的作用域随定义点的不同而不同。
阅读(580) | 评论(0) | 转发(0) |