static关键字
static既能修饰变量也能修饰函数。static修饰变量时既可以修饰局部变量也可以修饰全局变量:static修饰的局部变量生命周期延长至整个程序执行结束在释放;static修饰的全局变量只能在本文件中被访问,不能被其他文件访问。static修饰函数时,它修饰的函数只能在本文件中被调用,不能被其他文件调用。
extern关键字
声明这个变量是在其他文件中定义的,可以到对应的文件中寻找。当一个文件想调用其他文件的变量时,用extern进行外部声明。
const关键字
const修饰的变量是只读变量,变量对应的空间是可变的,但是不能通过此变量名对空间进行修改。const一般在修饰形参时使用,保护实参变量在使用过程中不被修改
const int num = 5; //定义为const类型后不能再通过num++对num的值进行修改;
int *ptr = # //可以用指针指向这块内存空间并可以通过(*ptr)++对对应空间的值进行修改
register关键字
register只能修饰局部变量,不能修饰全局变量和函数。它的作用是请求编译器尽可能的将变量存储在cpu内部,从而省去了cpu从内部抓取变量的时间提高了cpu的运行效率但是cpu寄存器存储空间有限,不可能将所有的变量存储在cpu中。所以将经常被访问的变量(比如:循环变量)保存在cpu中,由于register修饰的我函数可能保存在cpu寄存器中,所以不能用&获得变量的地址,而且register修饰的变量的数据类型必须是cpu所接受的数据类型