全局变量,静态全局变量,局部变量,静态局部变量的区别

来源:互联网 发布:战舰世界世界大和知乎 编辑:程序博客网 时间:2024/06/05 08:25

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

参考http://www.cnblogs.com/burandanxin/archive/2009/10/16/1584735.html


0 0
原创粉丝点击