一、auto
变量声明一般形式
<存储类型> <数据类型> <变量名>
在函数体的某程序段内说明auto存储类型的变量时可以省略关键字auto。
•auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里。(默认是随机值),不能是全局变量。
二、register
register称为寄存器型,用于定义局部变量,表示该变量尽可能存储在CPU的寄存器中,提高访问速度,初始值随机;寄存器是CPU内部的高速存储单元,比内存访问速度快很大,但数量有限,因此如申请不到就使用一般内存,同auto;
•不能用“&”来获取register变量的地址。
三、static
static变量称为静态存储类型的变量
•定义全局变量或局部变量,表示变量在程序运行期间一直存在
•默认初始值为0
•局部变量使用static修饰,有以下特点:
1.在内存中以固定地址存放的,而不是以堆栈方式存放
2.只要程序没结束,就不会随着说明它的程序段的结束而消失,它下次再调用该函数,该存储类型的变量不再重新说明,而且还保留上次调用存入的数值。
static修饰的全部变量,其它文件无法使用
四、extern
1.extern称为外部参照引用型,使用extern说明的变量是想引用在其它文件中函数体外部说明的变量。编译器在编译时不会给该变量分配内存,而是在链接阶段将其与实际的定义进行关联
2.声明外部变量
当你希望在一个文件中使用另一个文件中定义的全局变量时,需要在当前文件中使用extern进行变量的声明ü在当前文件中,它只是一个未定义的外部变量引用,实际定义在其它文件中