一、Const
>作用:
在liunx C中const修饰一个变量,设置该变量的属性为只读。
>注意事项:
1,用const修饰的变量不能用变量名修改其所对应的空间,但是可以用指向它的指针去改变它的值,所以它并不是被声明为了常量。
const int num = 5;
num = 10; /*出错!num 声明为只读变量,不能通过变量名去修改其对应空间的值*/
int *p = #
*p = 10; /*允许,因为num毕竟不是被被声明为了常量*/
2,用const修饰变量时需同时赋初值,否则就不能通过变量名直接赋初值了
const int num;num = 5;/*出错!不能通过变量名修改其值*/
>用途:
主要用于修饰函数形参
二、static
>作用:
static既可修饰变量又可修饰函数;
static修饰的局部变量称静态局部变量,延长变量的生命周期直到程序运行结束。
static修饰全局变量,该全局变量只能在本文件使用。
static修饰函数,该函数只能在本文件使用。
>注意事项:
static修饰的变量保存在全局数据区的静态数据区,没有初始化时,会被自动初始化为0
>用途:
1,静态局部变量的功能与全局变量的功能很类似,用作计数使用,但全局变量在程序中是比较危险的,尽可能少用全局变量
用static修饰的变量代替全局变量
2,当一个全局变量不想让其他文件使用时用static修饰
3,当一个函数不想被其他文件使用时用static修饰
三、register
>作用:
请求编译器尽可能地将变量保存在cpu内部寄存器中
>注意事项:
1,register只能修饰局部变量,不能修饰全变量以及函数,因为全局变量是要供多个文件共享的,不能用register修饰,不能修饰函数,因为函数中可能定义了大量的变量,而cpu内部寄存器有限。
2,register修饰的变量不能用取地址符&对变量取地址,因为变量保存在cpu内部寄存器里,不是在主存单元中。
3,register修饰变量类型必须是当前cpu所能接受的类型。
4,注意register只是暗示,不是命令
>用途:
频繁被访问的变量可以声明为register变量。