变量是什么,C语言变量的声明和使用(非常详细)
在 C 语言中,变量是用于存储和处理数据的。
变量可以被看作带有标签的盒子,用于存储各种数据类型的值,如整数、浮点数等。当程序运行时,它可以在变量中存储不同的值,并且可以对这些值进行操作、计算和传递。
变量是 C 语言中一个基本且重要的概念,它提供了一种方便的方式来存储和处理程序中的数据。
例如,下面声明了几个变量:
为了让编译器正确识别标识符,必须在使用前对其进行声明或定义。因此,要使标识符被编译器看作一个变量,必须在使用前将其声明为一个变量。
以下是一些示例:
【实例 1】变量 a 在使用前被正确地声明。
【实例 2】变量 a 在未声明的情况下被错误地使用。
【实例 3】变量 a 在声明前被错误地使用。
重新复习一遍标识符的命名规则:标识符由大小写字母、数字和下画线组成,不能以数字开头,并且必须与现有的关键字不同。
我们可以通过以下五个例子来更好地理解标识符的命名规则。

图 1 使用了未初始化的局部变量
这是因为变量 a 在使用之前没有被赋予任何确定的值。此时,a 的值是一个随机值,这样的随机值会导致程序产生错误的结果。Visual Studio 在默认设置下,使用这种未初始化的变量是无法通过编译的。
为了解决这个问题,我们需要为变量 a 赋予一个确定的值。常见的两种方法如下:
1) 变量声明后立即初始化
2) 变量先声明,后赋值
无论采用哪种方法,都能为变量 a 赋予一个确定的值,避免程序出现错误的结果。
赋值是为已经声明过的变量赋予一个数值,写法如下。
总结一下,变量可以多次被赋值,但是不能多次被声明(初始化)。
多次初始化的写法相当于将变量重复声明,在第二次声明变量时,编译器会报告一个编译错误。
下面的程序是正确的示例,它只声明了一次变量 a,并在后续的代码中为其赋值两次。
下面是错误的示例,它多次声明了变量 a。
变量可以被看作带有标签的盒子,用于存储各种数据类型的值,如整数、浮点数等。当程序运行时,它可以在变量中存储不同的值,并且可以对这些值进行操作、计算和传递。
变量是 C 语言中一个基本且重要的概念,它提供了一种方便的方式来存储和处理程序中的数据。
C语言变量的声明
声明变量可以套用如下的公式:数据类型 + 标识符 + 分号
标识符是我们自己命名的一个标识,用于表示一个变量、函数或其他实体的名称。例如,下面声明了几个变量:
short s; int n; long l; float f; double d;上述代码中的 s、n、l、f 和 d 是我们自己命名的标识符,用于表示变量。
为了让编译器正确识别标识符,必须在使用前对其进行声明或定义。因此,要使标识符被编译器看作一个变量,必须在使用前将其声明为一个变量。
以下是一些示例:
【实例 1】变量 a 在使用前被正确地声明。
// 正确示例 #include <stdio.h> int main() { int a; printf("%d\n", a); // 正确,变量a在使用前被声明了 return 0; }
【实例 2】变量 a 在未声明的情况下被错误地使用。
// 错误示例 #include <stdio.h> int main() { printf("%d\n", a); // 错误,变量a未被声明 return 0; }
【实例 3】变量 a 在声明前被错误地使用。
// 错误示例 #include <stdio.h> int main() { printf("%d\n", a); // 错误,变量在声明前被使用 int a; return 0; }
变量命名规则
在 C 语言中,声明变量的公式为“数据类型 + 标识符 + 分号”。变量名由于是标识符的一种,因此必须符合标识符的命名规则。重新复习一遍标识符的命名规则:标识符由大小写字母、数字和下画线组成,不能以数字开头,并且必须与现有的关键字不同。
我们可以通过以下五个例子来更好地理解标识符的命名规则。
short apple; // 正确,使用了一个合法的标识符 int 88fruit; // 错误,不能以数字开头 long _pencil; // 正确,可以以下画线或字母开头 float love_you; // 正确,使用了一个下画线的合法标识符 double int; // 错误,不能使用现有的关键字作为标识符
变量的初始化和赋值
思考一下,下面实例输出的数值是多少呢?#include <stdio.h> int main() { int a; printf("%d\n", a); return 0; }运行之后我们发现,它居然报错了,如下图所示:

图 1 使用了未初始化的局部变量
这是因为变量 a 在使用之前没有被赋予任何确定的值。此时,a 的值是一个随机值,这样的随机值会导致程序产生错误的结果。Visual Studio 在默认设置下,使用这种未初始化的变量是无法通过编译的。
为了解决这个问题,我们需要为变量 a 赋予一个确定的值。常见的两种方法如下:
1) 变量声明后立即初始化
#include <stdio.h> int main() { int a = 100; // 变量a一旦被声明,就会被赋值100 printf("%d\n", a); return 0; }变量 a 一旦被声明,就会被赋值 100。
2) 变量先声明,后赋值
#include <stdio.h> int main() { int a; // 变量a被声明后,它是一个随机值 a = 100; // 这里我们使用赋值运算符,将100赋予变量a printf("%d\n", a); return 0; }变量 a 被声明后未进行初始化,后续使用赋值运算符为变量赋值。
无论采用哪种方法,都能为变量 a 赋予一个确定的值,避免程序出现错误的结果。
初始化和赋值的区别
在 C 语言中,初始化和赋值都是用来给变量赋值的操作,但它们在语法和含义上有一些区别。赋值是为已经声明过的变量赋予一个数值,写法如下。
a = 100;初始化是在变量声明时进行的赋值操作,写法如下。
int a = 100;可以通过赋值运算符左边的位置来区分赋值和初始化:
- 初始化只能在变量声明时使用,并且只能赋予一个初始值。如果变量未经初始化,在其内存位置中可能会存储随机值;
- 赋值可以在变量声明后的任何时候使用,而且可以多次赋值。这意味着可以先声明一个变量,稍后为其赋予一个值。
总结一下,变量可以多次被赋值,但是不能多次被声明(初始化)。
多次初始化的写法相当于将变量重复声明,在第二次声明变量时,编译器会报告一个编译错误。
下面的程序是正确的示例,它只声明了一次变量 a,并在后续的代码中为其赋值两次。
// 正确,将输出100和200 #include <stdio.h> int main() { int a; a = 100; printf("%d\n", a); a = 200; printf("%d\n", a); return 0; }
下面是错误的示例,它多次声明了变量 a。
// 错误,变量a被重复声明 #include <stdio.h> int main() { int a; a = 100; printf("%d\n", a); int a = 200; printf("%d\n", a); return 0; }