存储结构
存储类型
变量的存储类型(storage class)是指存储变量值的内存类型,分为:
静态变量:存储于静态内存,在程序运行之前创建,运行时一直存在,运行完后销毁
自动变量:存储于堆栈,在代码块结束后销毁
寄存器变量:存储于硬件寄存器,和自动变量相同。但是可能增加一个运行时堆栈处理
存储的地方有三个:普通内存,运行时堆栈,硬件寄存器
凡是在任何代码块之外声明的变量(和函数) 都是 静态变量,无法指定成其他存储类型。
在代码块内部声明的变量,如果没有额外修饰或者用关键字auto修饰,是自动变量。
在代码块内部声明的变量,用static关键字修饰,是静态变量。此时变量的作用域不发生变化。
对于自动变量,用register关键词修饰,是寄存器变量。(编译器会自己来决定是否处理)
函数的形参不能声明成静态,为了支持递归
初始化
静态变量在程序运行时,就可以确定位置,所以可以无额外时间的赋值,如果不赋值,默认初始值为0
自动变量因为无法确定位置,所以没有默认初始值,既为垃圾数据,然后在执行到作用域时被隐式初始化。除了const 变量,是否声明时就初始化,没有效率上的区别。
其他
在连接之后,数组在内存中的位置是固定的。
Last updated
Was this helpful?