C语言变量总结
1. 自动变量
一般情况下代码块内部定义的变量都是自动变量。当然也可以显示的使用auto关键字,所有自动变量的声明周期就是变量所属的大括号
2. register寄存器变量
通常变量在内存当中,如果能把变量放到CPU的寄存器里面,代码执行效率会更高
register int I;
3. 静态变量
静态变量是指内存位置在程序执行期间一直不改变的变量,静态变量在程序刚加载到内存的时候就出现,所以和定义静态变量的大括号无关,一直到程序结束的时候才从内存消失,同时静态变量的值只初始化一次。
Static int I = 0;//定义了一个静态变量
(1)代码块作用域内的静态变量(局部静态变量)
一个代码块内部的静态变量只能被这个代码块内部访问。
(2)代码块作用域外的静态变量(全局静态变量)
代码块之外的静态变量在程序执行期间一直存在,但只能被定义这个变量的文件访问,代码块之外的静态变量只能在定义这个变量的文件中使用,在其他文件中不能访问。
因为全局变量的名字是不能相同的,这样会带来一个什么问题?因为一个项目往往是多个人写的,每个人都定义自己的全局变量,最后代码合并的时候会出错。但static的全局变量在不同的文件中名字是可以相同的
4. 全局变量
全局变量的存储方式和静态变量相同,但可以被多个文件访问,定义在代码块之外的变量就是全局变量
全局变量即使不在同一个文件里面,也不能重名。
5. 外部变量与extern关键字
extern int i; //声明一个变量,这个变量在别的文件中已经定义了,这里只是使用,而不是定义