C语言入门:变量详解

C语言变量详解

变量是C语言编程中最基础也是最重要的概念之一。它本质上是一个被命名的内存区域,用于存储和操作数据。本文将详细解释C语言中变量的命名、声明、赋值和作用域。

1. 变量的命名规则

变量名在C语言中属于标识符,必须遵循严格的命名规范:

  • 组成字符:只能由字母(大小写均可)、数字和下划线(_)组成。

  • 开头字符:不能以数字开头。

  • 长度限制:长度不应超过63个字符。

  • 区分大小写:例如,starStarSTAR 是三个不同的变量。

  • 避免关键字和保留字:不能使用C语言的关键字(如 int, if, for 等)和保留字作为变量名。以下是C语言主要的关键字和保留字列表:

    auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, inline, int, long, register, restrict, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while

  • 系统保留名:避免使用双下划线开头或单下划线加大写字母开头的名称,这些是系统保留的。

无效变量名示例$zjj**p, 2cat, Hot-tax, don't

2. 变量的声明

在C语言中,变量必须先声明,后使用。声明变量有两个主要目的:

  1. 告诉编译器变量的存在及其名称。
  2. 指定变量的类型(如整数、浮点数等),编译器据此分配内存空间。

声明语法

C
1
int height; // 声明一个整数类型的变量 height
  • 声明语句必须以分号(;)结尾。
  • 可以在同一行声明多个相同类型的变量:int height, width;
  • 一旦声明,变量的类型在程序运行期间就不能改变。

3. 变量的赋值

声明变量时,系统会分配内存,但该内存区域可能包含随机值。因此,变量在使用前必须被赋值,否则可能导致不可预知的结果。

赋值通过赋值运算符(=) 完成。

赋值示例

C
1
2
int num;    // 声明
num = 42; // 赋值
  • 声明与赋值合并:可以将声明和赋值写在同一行:int num = 42;
  • 多重赋值:赋值表达式本身有返回值(等于右边的值),因此可以连续赋值:
    C
    1
    2
    int x, y, z;
    x = y = z = 10; // x, y, z 都被赋值为10
  • 左值与右值
    • 左值:通常指变量,可以放在赋值运算符左边。
    • 右值:通常指具体的数值或表达式,只能放在赋值运算符右边。例如 x = 1 合法,但 1 = x 会报错。

4. 变量的作用域

作用域决定了变量的“可见性”和“生命周期”,即变量在代码的哪些部分可以被访问。

C语言主要有两种作用域:

  • 文件作用域

    • 在源码文件顶层(所有函数之外)声明的变量拥有文件作用域。
    • 从声明处开始,到文件末尾都有效,可以被该文件内的任何函数访问。
    • 示例:
      C
      1
      2
      3
      4
      int globalVar = 10; // 文件作用域
      int main() {
      printf("%d", globalVar); // 合法
      }
  • 块作用域

    • 在花括号 {} 构成的代码块(如函数体、if语句、for循环等)内部声明的变量拥有块作用域。
    • 变量只在其所在的代码块内部有效,外部无法访问。
    • 示例:
      C
      1
      2
      3
      4
      5
      if (a == 12) {
      int b = 99; // 块作用域
      printf("%d", b); // 合法
      }
      printf("%d", b); // 错误!b 在此处不可见
    • 作用域嵌套规则
      1. 内层块可以访问外层块的变量。
      2. 外层块不能访问内层块的变量。
      3. 如果内层块声明了与外层块同名的变量,则在内层块中,同名变量会覆盖外层变量。
      C
      1
      2
      3
      4
      5
      6
      7
      8
      {
      int i = 10;
      {
      int i = 20; // 覆盖了外层的 i
      printf("%d\n", i); // 输出 20
      }
      printf("%d\n", i); // 输出 10
      }

总结:理解变量的命名、声明、赋值和作用域是掌握C语言的基础。正确的使用变量可以确保代码的可读性、安全性和效率。务必记住“先声明,后使用,使用前要赋值”的原则,并注意变量的作用范围,避免常见的错误。


C语言入门:变量详解
https://www.edenzeng.online/2015/10/07/0.技术栈/01.开发语言/01.C语言/02-变量详解/
作者
Edenzeng
发布于
2015年10月7日
许可协议