一.全局变量:
作用域:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。
存储区:全局变量本身是静态存储方式,存储在静态数据区。
生存期:全局变量在程序运行期间一直存在直到程序结束时才释放。
二.静态全局变量
静态全局变量即在全局变量前加static修饰,这样就改变了变量的作用域,使之只对源程序中定义该变量的文件可见,起到了隐藏的作用。
三.局部变量
作用域:局部变量只有局部作用域,它只作用于当前定义该变量的函数里。
存储区:局部变量存储在内存的栈中。
生存期:局部变量是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
四.静态局部变量
静态局部变量在当前局部变量加了static修饰后,改变了变量的存储区,使之变成了静态存储方式存储在静态数据区。静态局部变量只在定义它的函数内有效,只是程序只分配依次内存,函数返回后变量不会消失,这样下一次调用函数时还能利用以前的值。
总结:
static的作用:
static作用于全局变量时:改变作用范围,不改变存储位置。
static作用于局部变量时:改
变存储位置,不改变作用范围。
参考http://www.cnblogs.com/burandanxin/archive/2009/10/16/1584735.html