static :
使用static有三种情况:
(1)、函数内部static变量,关键在于生命周期持久,它的值不会随着函数调用的结束而消失,
static修饰的局部变量存放在全局数据区的静态变量去,初始化的时候自动初始化为0;
(2)、函数外部static变量,即全局变量,这个全局变量不能再被本文件外的其他文件使用,
即为这个文件的私有变量;
(3)、static函数,这个函数只能在在本文件内使用,而不能被其他文件使用,即为这个文件
的私有函数;
const:
(1)、*前const比如 int const *p;const直接修饰的为*p而*p为一个int型的变量,即*p不
能变p可变,变量值不能变但变量地址可变;
(2)、*后const比如int *const p;const直接修饰的为p而p是一个int型指针变量,即*p可
变但p不可变,变量值可变的变量不能变;
!注意const int a = 10;这时可以用指针的方式来间接的修改a的值,c语言中const是不安
全的;
extern:
(1)、可以引用同一个文件下的变量。这个是在先使用某个变量而在之前却未定义,而在
之后定义时可以用extern;
(2)、引用另一个文件中的变量或者函数。
register:
(1)、register意味着这个变量将会被频繁使用,将其保存到cpu寄存器中;
(2)、不能用&来取register变量的地址,因为它在寄存器中;
(3)、因为cpu的寄存器是有限的所以register不能无限定义;
(4)、register变量的必须是一个单一的值,并且长度小于或者等于整形长度;
volatile:
volatile提醒编译器该变量随时都有可能变化,因此编译后的程序每次需要读取或者存
储这个变量的时候都会从地址中读取数据。如果没加volatile则编译器可能会优化读取
和存储,可能暂时使用寄存器中的值。
!欢迎大家指出不足之处