-
auto:当前变量的作用域为当前函数或代码段的局部变量,意味着当前变量会在内存栈上进行分配
-
const:
-
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变
-
const int n=5; int const n=5;(相等)
-
常量指针是指针指向的内容是常量,不能通过这个指针改变变量的值,但是还是可以通过其他的引用来改变变量的值的。
-
int a=5;
int b=6;
const int* n=&a;
n=&b;
- 指针常量是指指针本身是个常量(反着记),不能在指向其他的地址,地址中保存的数值是可以改变的
int a=5;
int *p=&a;
int* const n=&a;
*p=8;
-
extern:
- 利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数(只有当一个变量是一个全局变量时,extern变量才会起作用,且extern关键字只需要指明类型和变量名就行了,不能再重新赋值)
- 利用extern关键字先声明一下num变量,告诉编译器num这个变量是存在的,但是不是在这之前声明的,你到别的地方找
-
register:关键字暗示编译程序相应的变量将会被频繁的使用,如果可能的话,应将其保存在 CPU 的寄存器中,以加快其存取速度。
-
signed:有符号数值
-
static:全局变量存储在静态数据区
- 静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。
- static局部变量只被初始化一次,下一次依据上一次结果值;
- static函数与普通函数作用域不同,仅在本文件,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件.
-
union:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
-
volatile关键字可以用来提醒编译器它后面所定义的变量随时有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值