变量与存储空间及其存储结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量与存储空间及其存储结构相关的知识,希望对你有一定的参考价值。

C程序中变量作为数据存储在计算机内存中,不同的变量类型对应物理硬件内存不同的存储位置。


总的来说,变量按照作用范围的划分(空间)有局部变量和全局变量。按照作用时间上的划分有静态存储和动态存储。不同的作用域和作用时间组合有静态局部变量,静态全局变量,局部变量和外部全局变量。不同变量类型在内存中的存储位置也不一样。


不同的编译系统和编程语言的计算机内部存储的划分不一样。C语言程序的内存划分为五部分:静态存储区(全局区),栈区,堆区,文字常量区,程序代码区。


局部变量定义在函数内部,它的作用域是变量定义的位置到函数的结束。函数操作执行完毕后变量所占内存空间释放。存储在内存中堆,栈或者寄存器中。存储在栈中变量由系统释放,存储在堆中由自己释放。


静态局部变量定义在函数内部,数据类型前加static作为标识符。作用域是变量定义的位置到变量所在函数的末尾。函数结束后变量的值保留,保留时间是整个程序周期。存储在静态存储区。


全局变量定义在函数外它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字 extern对该变量作“外部变量声明。全局变量存储在内存的静态存储区。


静态全局变量,在全局变量的数据类型前加static,在多文件程序中,变量只能在当前文件中调用。




以上是关于变量与存储空间及其存储结构的主要内容,如果未能解决你的问题,请参考以下文章

Python数据结构之----数据存储与深浅拷贝

Java数据结构(线性表)--线性表的链式存储(单链表)及其实现

数据结构之链表及其Java实现

计算机二级Java语言卷005

c语言结构体的问题,存储空间大小?

数据结构--顺序表及其实现