存储类型:auto static extern register
auto: 只能用来修饰局部变量,修饰的变量存储在栈区
extern:只能用来修饰全局变量,修饰的变量存储在静态区
static:既可以修饰全局变量,也可以修饰局部变量,修饰的变量存储在静态区
register:只能修饰局部变量,修饰的变量存储在寄存器中
初始化
初始化:定义变量的时候就给变量赋值
int b = 10; //初始化
int a;//定义了一个变量
a = 10;//赋值
注意:
全局变量不进行初始化,他的值为0;
局部变量不进行初始化,他的值是一个随机值。
auto :修饰局部变量,存储在栈区
register:修饰局部变量,修饰的变量存储在寄存器中,一般将变量存储在寄存器中,可以提高运行速度,但是,寄存器的内存空间很小,所以用register修饰局部变量时,若寄存器已满,还是会将变量存储在栈区。
extern:修饰全局变量,存储在静态区
程序可以由多个.c文件来构成,但是,main函数只能有一个
作用:告诉编译器,该变量已经在其他文件中定义过了
Static:既可以修饰全局变量,也可以修饰局部变量,修饰变量的时候存储在静态区
用static修饰局部变量:延长局部变量的生命周期,如果局部变量没有初始化,他的值为0。如果初始化了,那么只能初始化一次。
用static修饰全局变量,只能在本文件内使用(限制作用域)
生命周期和作用域
生命周期
从什么时候开辟空间到什么时候释放空间
作用域
使用的范围
局部变量:
生命周期:从定义开始,到模块(大括号)结束
作用域:大括号内
Static修饰的局部变量:
生命周期:从定义开始,到程序结束
作用域:大括号内
全局变量:
生命周期:从定义开始,到程序结束
作用域:整个程
Static修饰的全局变量:
生命周期:从定义开始,到程序结束
作用域:本文件内