1.register
(1)作用:请求编译器尽可能地将变量保存到cpu的内部寄存器中,省去cpu抓取数据的时间,提高程序的运行效率。
(2)将何种变量定义为register:
一般将频繁被访问的变量定义为register。
(3)使用时的注意事项:
①只能修饰局部变量,不能修饰全局变量
原因:全局变量会被多个进程使用,修饰为register的变量只能被当前进程知道变量的所保存的位置,其他进程不知道。
②不能用&获取register修饰变量的地址
原因:register变量保存在寄存器中,获取的是内存的地址。
③被register修饰的变量必须是cpu能接受的类型。
2.static
(1)修饰局部变量
作用:延长变量的生命周期,直至整个程序结束再释放。
(2)修饰全局变量
作用:使变量只能在本文件可被访问,其他文件不可被访问。
(3)修饰函数
作用:使函数只能在本文件被调用,不能在其他文件被调用。
(4)存储:
static修饰的变量保存在数据区中的静态存储区,若没有初始化,系统将其初始化为0;
(5)什么时候使用static:
①需要返回函数的局部变量,不让变量在函数结束后释放;
②全局变量只在本文件使用时(同时能避免在其他文件变量名被重复定义);
③修饰函数,改变函数的作用域。
3.extern:
(1)作用:外部声明
(2)注意:声明的变量是在其他文件定义的,声明变量要加数据类型,例如:
extern int count;
4.const
(1)作用:修饰只读变量
(2)修饰变量时:
该变量的空间是可变的,但不能通过变量名来修改这个空间;
例如:
const int num = 5;
int *p = #
*p = 6;
printf(”num = %d\n”, num);
运行结果:num = 6;
(2)修饰函数形参:
避免函数实现过程中修改形参的值。
(3)注意:用const修饰变量,要对变量进行初始化。