变量的属性
1、变量的分类
l根据作用域:可分为全局变量和局部变量。
l 根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern)。
静态存储方式是指在程序运行期间分配固定的存储空间的方式,动态存储方式是在程序运行期间根据需要进行动态的分配存储空间的方式。
2、变量的作用域和存储类别的关系
每一个变量均有作用域和存储类别两个属性,这些属性共同用于描述一个变量,这些不同类型的变量与存储位置的关系如下:
l 外部变量(全局变量)、静态外部变量、静态局部变量存储在静态存储区。
l 自动局部变量(局部变量默认为自动局部变量)、函数形参存储在动态存储区(即栈区)。
l 不论是静态存储区还是动态存储区均属于内存中的用户区。
l 而寄存器变量是存储在CPU寄存器中的而不是内存中。
3、与作用域相关的几个属性:
l 局部变量:在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的,这种类型的变量就称为“局部变量”。
l 全局变量:在函数外定义的变量,可以为本源文件中其它函数所公用,有效范围为从定义变量的位置开始到本源文件结束,这种类型的变量就称为“全局变量”。
4、与存储类型相关的几个属性:
l atuo:在声明局部变量时,若不指定 static,默认均是 auto,这类变量都是动态分配存储空间的,数据存储在动态存储区中。
l static:在声明局部变量时,使用关键字 static
将局部变量指定为“静态局部变量”,这样在函数调用结束后不消失而保留原值,即占用的存储单元不释放,在下一次函数调用时,该变量已有值就是上次函数调用结束时的值。
l register:在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
l extern:用于扩展全局变量的作用域。
1) 比如如果函数想引用一个外部变量,但该外部变量在该函数后定义,那么这个函数需要使用 extern
来声明变量,这样才能使用在该函数后面定义的全局变量。
2) 此外,extern
还可以在多文件的程序中声明外部变量。
分享到:
相关推荐
静态全局变量,静态局部变量,全局变量,局部变量静态全局变量,静态局部变量,全局变量,局部变量
全局变量、局部变量、静态全局变量、静态局部变量的区别
变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分:全局变量在整个工程文件内都...
CC++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
block,局部变量,全部变量,static的静态变量关系
比较局部变量、全局变量、堆、堆栈、静态和全局的区别和联系。
全局变量、局部变量、静态变量三者的区别。
python局部变量全局变量-静态方法-实例变量静态变量代码解析。
全局变量,静态变量,局部变量的区别,以及其内存分配情况,栈和堆的区别
本文主要介绍了C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别。具有很好的参考价值,下面跟着小编一起来看下吧
详细的分析了全局变量,局部变量,static变量的区别 以及使用时用该注意的东西,很不错的。有兴趣的可以看看
函数运行机制、局部变量、全局变量、静态变量.zip
Java成员变量局部变量静态变量成员方法全局方法等概念的区别共3页.pdf.zip
静态局部变量的特点: 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还...虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。复制代码 代码如下:functio
全局变量局部变量全局作域局部作域全局变量在静态数据区静态局部变量在静态数据区,静态局部变量在栈区存在于整个程序运期间静态局部变量存在于整个程序运期间,静态局部变
全局变量、局部变量、静态变量三者的区别
局部变量与全局变量区别,栈、堆和静态存储区的区别[借鉴].pdf
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域(.data),未初始化的全局变量和未初始化的静态变量在相邻的另一块区域(.bss)。 – 程序结束后由系统...