C语言变量总结

1. 自动变量

一般情况下代码块内部定义的变量都是自动变量。当然也可以显示的使用auto关键字,所有自动变量的声明周期就是变量所属的大括号

2. register寄存器变量

通常变量在内存当中,如果能把变量放到CPU的寄存器里面,代码执行效率会更高

register int I;

3. 静态变量

静态变量是指内存位置在程序执行期间一直不改变的变量,静态变量在程序刚加载到内存的时候就出现,所以和定义静态变量的大括号无关,一直到程序结束的时候才从内存消失,同时静态变量的值只初始化一次。

Static int I = 0;//定义了一个静态变量

(1)代码块作用域内的静态变量(局部静态变量)

一个代码块内部的静态变量只能被这个代码块内部访问。

(2)代码块作用域外的静态变量(全局静态变量)

代码块之外的静态变量在程序执行期间一直存在,但只能被定义这个变量的文件访问,代码块之外的静态变量只能在定义这个变量的文件中使用,在其他文件中不能访问。

因为全局变量的名字是不能相同的,这样会带来一个什么问题?因为一个项目往往是多个人写的,每个人都定义自己的全局变量,最后代码合并的时候会出错。但static的全局变量在不同的文件中名字是可以相同的

4. 全局变量

全局变量的存储方式和静态变量相同,但可以被多个文件访问,定义在代码块之外的变量就是全局变量

全局变量即使不在同一个文件里面,也不能重名。

5. 外部变量与extern关键字

extern int i;  //声明一个变量,这个变量在别的文件中已经定义了,这里只是使用,而不是定义

猜你喜欢

转载自www.cnblogs.com/xumaomao/p/12292512.html