关键字 | 作用 | 示例 | 补充说明 |
---|
auto | 自动变量(默认) | auto int x; | 常省略不写 |
static | 静态变量/函数 | static int count = 0; | 生命周期贯穿程序运行 |
extern | 声明外部定义的变量/函数 | extern int global_var; | 用于多文件共享该变量/函数 |
register | 建议将变量存入寄存器 | register int i; | |
const | 定义只读常量 | const int MAX = 100; | 不可修改(const 靠近谁 ,谁不变) |
volatile | 防止编译器优化(用于硬件访问) | volatile int *ptr; | 强制每次从内存读取,不能从寄存器读取 |
sizeof | 计算类型/对象所占字节数 | sizeof(int) | 编译时运算符 |
inline | 建议内联函数(C99新增) | inline int add() { … } | |
restrict | 指针优化(C99新增) | int *restrict p; | 表示指针是唯一访问路径 |
struct | 定义结构体类型 | struct Point { int x; int y; }; | |
typedef | 为类型创建别名 | 为类型创建别名 | |
union | 定义联合体(所有成员共享内存) | union Data { int i; float f; }; | |
enum | 定义枚举类型 | enum Color { RED, GREEN }; | |
补充:
inline 关键字和 define宏的 对比
特性 | inline 函数 | #define 宏 |
---|
本质 | 编译器建议内联的函数(可能被忽略) | 预处理器的文本替换(强制替换) |
处理阶段 | 编译期(由编译器决定是否内联) | 预处理期(在编译前完成替换) |
类型安全 | 是(支持类型检查) | 否(纯文本替换,易出错) |
调试支持 | 支持(保留函数符号) | 不支持(替换后无法跟踪原始宏) |