分享

[C++]全局变量和静态全局变量

 wlk8611 2012-06-14

 

一、作用域

变量的几种作用域:

全局作用域,文件作用域,命名空间作用域,类作用域,局部作用域,语句作用域。

 

二、C++内存的区

内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

 

二、比较

(不讨论类作用域静态变量,只说全局)

1.存储区

全局变量、静态局部变量、静态全局变量都在 静态存储区分配空间。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。

2. 作用域

(1)全局变量

全局变量具有全局作用域文件作用域(文件中的全局)。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。

其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

(2)静态全局变量

静态全局变量也具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。

即使两个不同的源文件都定义了相同的静态全局变量,他们也是不同的变量。

三、总体来说

非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。

静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。

就存储区域来说是没有区别的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多