本帖最后由 寇亮 于 2014-8-12 23:54 编辑
接上一帖——变量的存储属性(寻址和字节顺序)
1. 变量的存储属性
凡是定义在函数之外的变量都是全局变量。 任何一个运行中的程序,在内存中都被分成代码区和数据区两部分,数据区又分为自动存储区、静态存储区、动态分配区三部分。 自动存储区按照栈结构组织,局部变量通常被存放在栈区,在进入所在块时被创建所在块结束时被撤销,变量必须又程序员显式初始化否则初始值不确定。 静态存储区中的变量在程序开始执行时被创建并自动初始化,程序结束时才撤销。全局变量被分配在静态存储区。 动态存储区可以由程序员分配和管理,按照堆结构组织。 2. 变量的存储类型 局部自动类型,函数内部用auto或register声明。通常把使用频率较高的变量定义为register类型,系统将它存放在寄存器中。 静态局部类型,函数内部用static声明。变量可见域不改变,但函数撤销后变量值仍保留。 静态全局类型,函数外部用static声明。多文件程序中用static声明的变量可见域仅限于所在文件,未用static声明的外部变量可见域是整个程序。 3. 全局变量 对于位于全局变量定义点之前的函数,可以通过extern声明使变量的作用域向前扩充。 在其他文件中使用extern声明,告诉编译器变量到外部去找。
|