变量的4种存储类型
所有的数据都有两种类型:数据类型,存储类型。
数据类型:如int, float等
存储类型:一共有四种存储类型的变量,分别为自动变量(auto)、静态变量(static)、外部变量(extern)以及
寄存器变量(register)
auto - 函数中所有的非静态局部变量。
auto型一般是函数内部定义的变量(常用,且前面不加auto)。
register-不属于内存的一部分,所以不能取地址。一般经常被使用的变量(如一变量要计算几千次)可以
设置成寄存器,register变量会被存在寄存器中,计算速度远快于存在内存中的非register变量。
寄存器变量不能定义为全局变量,一般不需要用register关键字。
static-在变量前加上static关键字的变量。
静态变量生命周期和全局变量一致,(局部)静态变量但只能在定义的函数内访问。无论调用几次,只初始化一次。
全局静态变量,定义之后,下面的任意函数都可以访问。
extern-把全局变量在其他源文件中声明成extern变量,可以扩展该全局变量的作用域至声明的那个文件,其本质就是
对全局变量作用域的扩展。
变量的作用域和生存周期
extern int value;是声明,所选中的文件中若没有定义全局变量value,则报错。
extren int value = 524;同时声明且定义。声明和定义是不同的。