Skip to content

C 存储类(Storage Classes)

存储类描述变量/函数的存储期、作用域和链接属性。

1. auto(自动存储期)

  • 默认局部变量的存储类
  • 进入块分配,离开块释放

2. static(静态存储期)

  • 局部 static:函数内保持值直到程序结束
  • 全局 static:内部链接,仅当前源文件可见
c
#include <stdio.h>

void counter(void) {
    static int c = 0; // 仅初始化一次
    printf("c=%d\n", ++c);
}

int main(void) {
    counter(); counter(); counter();
}

3. extern(外部链接)

  • 声明外部定义的符号
c
// a.c
int g = 42; // 定义
// b.c
extern int g; // 声明

4. register(提示性)

  • 历史遗留,建议忽略,让编译器自行优化

5. 函数的存储类

  • 函数默认具有外部链接
  • 使用 static 可限制为内部链接

6. 线程局部存储(可选)

  • C11 _Thread_local,或编译器扩展 __thread

7. 小结

理解存储类有助于你控制变量与函数的可见性与生命周期,在多文件工程尤为重要。

本站内容仅供学习和研究使用。