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