C 变量

2025 年 7 月 3 日 | 10 分钟阅读

在 C 编程语言中,变量用于存储用户提供的不同类型的输入数据。它用于存储信息。它的值可以修改并重复使用多次。它是一种重要的方法,通过符号表示内存位置,以便于识别。

C 中,变量是用于存储指定 数据类型 值的指定内存区域。每个变量都有一个唯一的标识符,即它的名称,以及一个数据类型,描述它可以保存的数据类型。

语法

在 C 中定义变量的语法如下

在这个语法中,

  • 数据类型:表示变量可以保存的数据类型(如 int、char、float、double 等)。
  • 变量名:变量标识符。它代表变量的名称。

C 变量的简单示例

让我们举例说明 C 中的变量。

示例

编译并运行

输出

The integer value stored in variable value1 is : 10 
The character value stored in variable value2 is : T 
The float type values stored in variables f1, f2, f3 are : 
10.900000 
3.500000 
6.100000 

说明

在此示例中,我们创建了多个变量来存储不同类型的数据,其中 Value1 存储整数类型的输入值,Value2 存储字符类型的输入值,F1、f2 和 f3 存储浮点类型的输入值。所有这些都是我们用来在内存中存储用户输入数据的变量名,而无需记住它们的内存地址。

声明 C 变量的规则

在 C 中,变量名必须遵循一些规则才能有效。以下是 C 中命名变量的规则

  1. 允许的字符:变量名包括字母(大写和小写)、数字和下划线。它们必须以字母(大写或小写)或下划线(_)开头。
  2. 区分大小写:C 是一种区分大小写的编程语言。这意味着大写和小写字母被视为不同的。例如,myVar、MyVar 和 myvar 都被视为不同的变量名。
  3. 关键字:变量名不能与 C 关键字(保留字)相同,因为它们在语言中具有特殊含义。例如,我们不能使用 int、float、char、for、while 等作为变量名。
  4. 长度限制:C 中变量名的长度没有标准限制。最好保持它们简短且具有描述性。某些编译器可能会对变量名设置最大长度限制。
  5. 空格和特殊字符:变量名不能包含空格或特殊字符(如 !, @, #, $, %, ^, &, *, (, ), -, +, =, [, ], {, }, |, \, /, <, >,., ?;, ', 或 ")。下划线是变量名中唯一允许的特殊字符。
  6. 保留标识符:虽然这不是严格的规则,但建议避免使用库或标准用法中常见的特定模式或标识符。例如,以 __(双下划线)开头的变量通常保留供系统或编译器使用。

C 中有效和无效的变量名

有几个有效和无效的变量名。其中一些如下

有效变量名

  • int age;
  • float salary;
  • char _status;
  • double average_score;
  • int studentCount;

无效变量名

  • int 1stNumber; // 以数字开头
  • float my-salary; // 包含连字符 (-)
  • char int; // 与 C 关键字相同
  • int double; // 与 C 关键字相同
  • float my$var; // 包含不支持的特殊字符

变量声明

在 C 编程中,告知编译器变量的存在及其数据类型的过程称为变量声明。它通知编译器程序中将使用具有特定名称和数据类型的变量。此时仍不会为该变量分配内存。通常在变量使用之前的函数或块的开头可以看到。

语法

变量声明的通用语法是

变量声明示例

让我们举例说明 C 中的变量声明。

示例

变量定义

在 C 编程中,在程序执行期间为变量保留内存空间以存储其分配值的过程称为变量定义。它基于我们用于变量的数据类型,从而将变量名与特定大小的特定内存地址相关联。变量可以在同一条语句中声明和定义,尽管它们也可以根据需要分开。

变量初始化

在 C 编程中,变量声明是告知编译器有关变量的存在和数据类型的行为。它通知编译器程序中将使用具有特定名称和数据类型的变量,但仍需要为该变量分配内存。未显式初始化的变量将包含垃圾/随机数据,这可能导致意外的程序行为。

变量初始化示例

让我们举例说明 C 中的变量初始化。

示例

编译并运行

输出

Initial age: 25
Initial salary: 2500.50
Initial: J
Updated age: 30
Updated salary: 3000.00

说明

在上面的示例中,我们使用了变量 age、salary 和初始声明。之后,我们定义了这些变量,并用初始值(例如,age = 25)对它们进行了初始化。稍后在程序中,我们可以修改这些变量的值(例如,age = 30)。

C 变量的类型

C 编程语言中有几种变量类型。其中一些如下

C Variables

现在,我们将逐一讨论每个变量。

局部变量

在 C 编程中,局部变量是在方法或块内声明的变量。局部变量必须在块的开头声明。这意味着我们需要在使用局部变量之前对其进行初始化。

使用局部变量的示例

让我们举例说明 C 中的局部变量。

示例

编译并运行

输出

The value assigned to the local variable is : 10

说明

在此示例中,我们在 main() 函数内定义了一个值为 10 的局部整数变量 x。之后,它使用 printf() 函数在屏幕上显示 x 的分配值。

全局变量

在 C 编程中,全局变量是在函数或块外部声明的变量。任何函数都可以更改全局变量的值。它可供所有函数使用。它必须在块的开头声明。

使用全局变量的示例

让我们举例说明 C 中的全局变量。

示例

编译并运行

输出

The value assigned to local variable is : 20
The value assigned to global variable is : 10

说明

在此示例中,我们将 value 作为全局变量,可在整个程序中访问,而 x 是在 main() 函数内声明的局部变量。之后,printf 函数显示了这两个变量的值。

静态变量

在 C 编程中,静态变量是使用 'static' 关键字声明的变量。静态变量在多次函数调用之间保留其值。

C 中静态变量的示例

让我们举例说明 C 中静态变量的用法。

示例

编译并运行

输出

The value assigned to local variable is : 11 
The value assigned to static variable is : 11  

说明

在此示例中,我们将 x 视为局部变量,将 y 视为静态变量。两者都增加 1,结果是 x = 11,y = 11。关键区别在于 x 每次函数运行时都会重新初始化,而 y 在函数调用之间保留其值。

自动变量

在 C 编程中,在块内声明的所有变量默认都是自动变量。此外,我们可以使用 auto 关键字显式声明一个自动变量。

C 中自动变量的示例

让我们举例说明 C 中的自动变量。

示例

编译并运行

输出

Value of a (auto by default): 25
Value of b (explicit auto): 45

说明

在此示例中,a 和 b 都是自动变量,这意味着在调用函数时会自动为其分配内存,并在函数结束时释放内存。

外部变量

在 C 编程中,我们可以使用外部变量在多个源文件中共享一个变量。如果要声明外部变量,则需要使用 extern 关键字。

语法

它具有以下语法:

C 中 extern 变量的示例

让我们举例说明 C 中的 extern 变量。

myfile.h

program1.c

示例

C 中变量的作用域

在 C 中,变量的作用域表示我们可以访问或使用的程序部分。C 根据变量声明的位置和方式提供不同的作用域类型。通常,作用域表示 {} 大括号内的区域。

结论

总之,变量是 C 中存储和操作内存中数据的关键组成部分。它们充当内存区域的命名占位符,使得识别和检索存储数据变得简单。遵循特定规则,例如以字母、下划线开头并避免使用保留关键字,可以确保变量名有效。

在 C 中,变量可以在声明时未初始化,也可以在声明时分配初始值。一旦声明了变量,就可以在整个程序中使用这些变量来存储和操作数据。在程序执行期间,可以根据需要重新为它们分配新值。

C 变量常见问题解答

1) C 中的变量是什么?

在 C 编程中,变量表示内存中一个命名的位置,用于存储在程序执行期间可能发生变化的数据。它应该用特定的数据类型声明。

2) C 中 auto 和 static 变量的主要区别是什么?

auto 和 static 变量的主要区别在于,auto 变量主要在每次函数调用时创建,并在返回时销毁。另一方面,static 变量在函数调用之间保留其值,并且在 C 程序中仅初始化一次。

3) 我们可以在 C 的不同函数中使用相同的变量名吗?

是的,我们可以在不同的函数中使用相同的变量名,因为局部变量具有块作用域。

4) C 中变量的类型有哪些?

C 中主要有五种变量类型。它们如下

  • 局部变量
  • 全局变量
  • 静态变量
  • 自动变量
  • 外部变量

5) C 中的变量名是否区分大小写?

是的,变量名区分大小写,这意味着大写字母和小写字母是不同的。


下一个主题C 中的数据类型