一、作用域 变量的几种作用域: 全局作用域,文件作用域,命名空间作用域,类作用域,局部作用域,语句作用域。
二、C++内存的区 内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。
二、比较 (不讨论类作用域静态变量,只说全局) 1.存储区 全局变量、静态局部变量、静态全局变量都在 静态存储区分配空间。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 2. 作用域 (1)全局变量 全局变量具有 其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。 (2)静态全局变量 静态全局变量也具有全局作用域,他与全局变量的区别在于如果程序包含多个文件的话,他作用于定义它的文件里,不能作用到其他文件里,即被static关键字修饰过的变量具有文件作用域。 即使两个不同的源文件都定义了相同的静态全局变量,他们也是不同的变量。
三、总体来说 非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其他源文件中引起错误。 就存储区域来说是没有区别的。
|
|