局部变量的存储类别
一般来说,内存中供用户使用的存储空间分为三部分,即:
(1)程序区:用于存放程序。
(2)静态存储区:存放在这个区域的变量,在程序开始运行时就分配固定的存储单元,直到程序运行结束后才释放所占据的存储单元。因此把存储在该区域的变量称为静态存储变量,例如全局变量、静态局部变量等。
(3)动态存储区:存放在这个区域的变量,在函数被调用的执行时才分配储存单元,一旦函数调用结束后立即释放所占的存储单元。因此把存储在该区域的变量称为动态存储变量,例如函数的形参、自动型的局部变量、函数调用时的现场保护和返回地址等。
在C语言中变量定义的一般形式应为:
存储类型 数据类型 变量名表
存储类型有:
- 自动类型(auto)
- 寄存器类型(register)
- 静态类型(static)
1、自动类型(auto)
默认在C语言中如果不做存储类型声明,则默认为自动类型。
auto int x,y;
等价于
int x,y;
2、寄存器类型(register)
使用关键字register来定义寄存器类型,这类的变量的值保持在CPU的一个寄存器中,如果这个变量访问的比较频繁,可以使用此变量,因为其访问的速度更快。
register int x,y;
3、静态类型(static)
用关键字static来定义的局部变量为静态局部变量。静态局部变量的值存储在静态存储区中,在程序开始前分配固定的存储单元,直到程序运行结束后才释放所占的存储单元,因此静态类型具有继承性,即在下一次调用时就是上次调用结束时的值。
static int f = 1;