关键字修饰变量
局部变量未赋初值初始化为垃圾值
全局变量和静态变量未赋初值初始化为0
-
闪电飞刀:register
register是局部变量,不能取地址,因为register变量存储在寄存器中,不是在内存,一般循环变量(大量频繁操作)定义成register变量(数量尽量较少)来提高效率,另外变量长度应该小于等于寄存器长度 -
隐形刺客:auto
局部变量默认为auto变量,存储在栈空间 -
外来的和尚会念经:extern
想在其他 .c 文件调用本文件 .c 中定义的变量,用extern声明, 声明外部变量,告诉编译器变量在其他文件定义,也可以声明函数(因为函数相当于全局变量)
extern int num √
extern int num = 100 ×
注意:声明不分配内存,定义分配内存 -
政权旗帜:static
(1)修饰全局变量,改变全局变量的作用域,使变量只能在本文件中调用,不能再其他文件中调用
(2)修饰函数(相当于修饰全局变量)
(3)修饰局部变量,改变局部变量的生命周期:不加static变量存放在栈空间内,函数运行完被释放;加static变量存放在数据段(静态存储区),直到程序运行结束才释放
运行结果:1 1 1