在C语言中,存储类(Storage Class)指的是变量或函数的存储方式和生命周期。C语言定义了几种存储类,包括自动存储类、寄存器存储类、静态存储类和外部存储类。

以下是C语言中常见的存储类:

1. 自动存储类(auto):

  •  特点:

  - 自动存储类是所有局部变量的默认存储类。
  - 变量在函数内部定义时,默认为自动存储类。
  - 生命周期仅在定义它的代码块内。
void exampleFunction() {
    auto int x = 10;  // auto 可以省略,等同于 int x = 10;
}

2. 寄存器存储类(register):

  •  特点:

  - 将局部变量存储在寄存器中,提高访问速度。
  - register 关键字用于声明寄存器变量。
  - 不允许对寄存器变量使用 &(取地址)运算符。
register int count = 0;

3. 静态存储类(static):

  •  特点:

  - 静态变量的生命周期贯穿整个程序执行期间。
  - 静态局部变量在第一次执行时初始化,之后保持其值。
  - 静态全局变量对整个程序可见,但在文件作用域内。
void exampleFunction() {
    static int x = 0;  // 静态局部变量
}

static int globalVar = 100;  // 静态全局变量

4. 外部存储类(extern):

  •  特点:

  - extern 关键字用于声明全局变量或函数,表示变量或函数定义在其他文件中。
  - 外部变量的存储空间在程序中只有一份。
// 文件1:file1.c
int globalVar = 100;

// 文件2:file2.c
extern int globalVar;  // 声明 globalVar,表示其定义在其他文件中

5. 线程存储类(_Thread_local):

  •  特点:

  - C11标准引入的存储类,用于声明线程局部存储变量。
  - 每个线程都有自己的变量实例。
_Thread_local int threadVar;

这些存储类允许程序员控制变量的生命周期、作用域和存储方式。了解存储类的概念有助于更好地理解C程序的运行时行为。


转载请注明出处:http://www.pingtaimeng.com/article/detail/3176/C语言