-
auto
定义变量为局部变量,在函数中定义变量时默认为auto -
static
- 定义静态局部变量,使用static修饰的变量将被放置到数据段,为空链接
- 定义函数或全局变量,被static修饰的函数只能被本文件内的函数调用,即为内部链接
-
register
告知编译器将尽可能变量存放到寄存器中,但该关键字只是一个请求,并不能保证执行,linux中就有一个变量被此关键字修饰-gd,被此关键字修饰的变量不一定能被放进,例如一个double类型的变量就会因为超量而无法放到寄存器中 -
extern
外部声明,由于编译器在编译时,是按文件来编译的,在编译一个文件的过程中是看不到其他文件的,所以需要在前面加入声明,告知编译器此函数/变量 已经在其他文件编译了
类似于汇编中的EXPORT -
typedef
存储类关键字,目的是定义用户自定义类型,提高代码可读性和易用性 -
restrict
该关键字是c99中新增的关键字,该关键字仅在修饰指针时有效,作用是告知编译器该指针仅在此处被调用,可以放心被优化 -
volatile
该关键字的作用是告知编译器此变量在其他地方可能被更改,不要对此变量进行优化,每次使用该变量都要重新从寄存器中读值,
一般情况,会改在编译器未知的情况下改变变量的值的情况有- 中断中会对此程序进行修改
- 硬件会变量值进行修改
- 会在其他文件中对变量进行修改
所以在定义变量时要开发者自行判断该变量的使用,以保证不会出错和程序效率
c语言学习笔记-关键字
最新推荐文章于 2024-07-09 15:15:50 发布