Skip to content

C 变量

变量是数据的命名存储位置。本章介绍变量的声明、定义、初始化、作用域与生命周期。

1. 声明与定义

  • 定义(definition):为变量分配存储空间
  • 声明(declaration):告诉编译器变量类型与名称

在 C 中,定义也是一种声明;使用 extern 可以只声明不定义:

c
// a.c
int g_count = 0; // 定义

// b.c
extern int g_count; // 声明

2. 初始化

c
int a = 10;
int b; b = 20; // 先声明后赋值

未初始化的局部变量值是未定义的(不可使用)。

3. 作用域

  • 块作用域:在 {} 内有效
  • 文件作用域:在文件级别声明
  • 原型作用域:函数原型中的参数名作用域

4. 存储期

  • 自动存储期(auto):进入块时分配,离开块时释放
  • 静态存储期(static):程序开始到结束
  • 动态存储期:使用 malloc/free 管理

5. 链接属性

  • 外部链接:可在多个翻译单元访问
  • 内部链接:static 限制为当前翻译单元
  • 无链接:块内局部变量

6. const 与 volatile

c
const int MAX = 100;      // 只读
volatile int flag;        // 防止优化忽略变化(如硬件寄存器)

7. 示例

c
#include <stdio.h>

static int s_value = 42; // 内部链接,静态存储期

void foo(void) {
    int x = 10; // 自动存储期
    printf("x=%d, s_value=%d\n", x, s_value);
}

int main(void) {
    foo();
    return 0;
}

8. 小结

正确区分声明/定义、作用域/存储期/链接属性,有助于组织多文件工程与管理变量生命周期。

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