目录
static 关键字
static的意思是静态的,用于修饰局部变量,全局变量和函数,修改其数据储存类型或链接属性。
修改其数据的存储类型:普通的局部变量存储在栈区,而加了static修饰的局部变量则存储在数据段(已初始化:.data区,未初始化:.bss区)。当函数返回时值保持不变,下一次进入函数,该变量的值依旧存在。
改变了连接属性:普通的全局变量或函数可本其他.c文件声明使用,但static修饰全局变量或函数时,该变量或函数仅在本.c文件中使用,其他文件不可访问,但在其他文件中可定义同名的变量后函数。
const 关键字
const关键字用来定义常变量即只读变量,存放在.rodata段,该常变量必须赋初值,因为const定义的变量是不允许改变的,即不允许给他重新赋值,即使赋值相同也不可以。
const int *p /int const *p *p =30 不符合的
p = 30 是符合的
const int *p只是将*p的值限制了,而没有将变量p的值给限制。
int* const p p = 30 是不符合
*p = 30 是符合的
int *const p限制的是p,而对*p没有任何影响。
const int* const p *p =30 不符合的
p = 30 是不符合
const int*把指针p给限制了, const p 把p这个变量给限制了。
inline 关键字
inline关键字是内联函数,其作用是将函数展开,把函数的代码复制到每一个调用处,而不发生跳转、压栈等一般性函数操作。这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。但inline关键字仅适用于代码较简单的函数体使用。
inline关键字定义的函数在.h或.c中都行(头文件中是可以定义函数的,但要加上static关键字,避免重复定义的问题),当想要定义的函数被多个.c文件调用时应该定义在.h文件中,但在.h加上static修饰。
inline关键字是在编译的时候执行,是对编译器发送一个请求,因而不同的编译器对inline的处理可能会有所不同。
volatile 关键字
volatile用于声明一个变量,在编译、读取、存储该变量的时候都不要做任何优化或修改。