一.register:修饰寄存器变量;
作用:请求编译器尽可能的将变量存在cpu内部寄存器中。
优点:减少了cpu从内存中抓取数据的时间,可以提高程序的执行效率;
适用对象:频繁访问的变量用register修饰,例如循环变量等;
注意事项:
1.register只能修饰局部变量,不能修饰函数和全局变量;
2.不能用&来获取被register修饰的变量的地址,因为该变量可能不是在内存中存储,而在cpu寄存器中;
3.register不能修饰cpu不接受的数据类型。例如:有些cpu就不接受浮点型数据,所以不能用register修饰浮点型;
二.stastic
static可以修饰变量也可以修饰函数。
1.修饰函数:该函数只能在本文件中被调用,在其他文件中不能被调用;
2.修饰变量:
(1)修饰局部变量:可以延长变量的生存周期,当函数结束时变量并不被释放,在程序结束时才被释放;
(2)修饰全局变量:该变量只能在本文件中被访问,在其他文件中不可被访问;
三.extern
外部声明,可以引用其他文件中的局部变量;
四.const
const可以将一个变量变为只读变量,此时我们不能通过变量名来访问对应空间,(但可以有其他方式访问,并不是对应空间被禁止访问)。
例如,有程序如下:
const int num;
num = 5;
该程序是无法赋值成功的,
因为const修饰了变量num,所以我们不能通过num这个变量名对num对应空间赋值,但是如果还有一个指针指向了num对应的空间,我们还可以通过指针给num对应空间赋值。
以为这个特性,我们在函数定义形参的时候常常用它来修饰,这样可以保护实参变量的值,防止它被修改。
还需要注意的是const关键字修饰离谁近,谁不可以被修改。例如:
const int *p = #
离*p近,所以*p++,不可以,但是p++却可以。