C语言的四种存储类型 auto(自动) register(寄存器)static(静态)extern(外部)
两种存储方式
静态存储:程序运行期间固定存储空间
动态存储:程序运行期间动态分配存储空间
Static和wxtern属性的变量是放在静态存储区
auto放在动态存储区
register放在CPU的通用寄存器内
存储在动态内存区的变量如果没有初始化,则变量的值是随机的。而如果是静态区的变量,系统会自动初始化为0。 int类型是0,浮点型是0.0,char是‘\0’
static修饰之后,局部变量的值在函数调用结束后不会消失而是保留原值。静态局部变量只会被赋一次初值。
3关于寄存器变量
1只有局部自动变量和形式参数可以作为寄存器变量
2一个计算机系统的寄存器数目有限,不能定义多个寄存器变量
3静态局部变量不能定义为寄存器变量
4现在的编译器会自动将使用频繁的变量放在寄存器中,所以实际应用的时候register声明变量其实没必要。