##### 存储类说明符 - 存储类说明符 - **存储类说明符**指定[[C.变量|变量]]和[[C.函数|函数]]的[[C.存储期|存储期]]和[[C.链接|链接]], 在绝大多数情况下, 不能在声明中使用多个存储类别说明符 - 语法 - `auto` - 自动存储类, 块作用域默认使用, 指示自动存储期限和无链接 - `register` - 寄存器存储类, 适用于块作用域和函数原型作用域, 建议编译器将变量存储在CPU的寄存器中, 而不是在内存中, 以加快访问速度, 使用后不能对该变量取地址, 指示自动存储期限和无链接 - `static` - 静态存储类, 指示静态存储期限和外部链接 - `extern` - 外部存储类, 当在一个文件中声明某个变量时, 表示该变量是在其他文件中定义的, 编译器不会为它分配内存, 指示静态存储期限和外部链接 - `typedef` - 本质上不是一个存储类, 放这只是语法形式分类, 用于为已有的类型定义新的类型名, 便于代码的可读性和维护 - 示例 ```c // 在一个文件中定义 int globalVar = 100; // 使用extern关键字在另一个文件中声明 extern int globalVar; // extern也可以用于函数 extern void myFunction(); ```