C 语言中的变量


2021年8月23日, Learn eTutorial
1927

在本 C 语言教程中,您将学习有关变量的所有知识,这是编程语言的基本单位。我们将通过示例详细讨论 C 语言中什么是变量,如何命名、声明和初始化变量。除此之外,您还将了解 C 语言中的左值和右值以及 C 语言中变量的类型。

C 语言中的变量是什么?

变量是计算机内存中的一个保留空间,数据可以存储在这里,您可以为每个内存位置分配一个特定的名称。在 RAM 中,每个字节的数据都按顺序存储,并具有明确的地址。其值从 '0' 开始,并随着内存分配序列的进行而增加。

如何在 C 语言中命名变量?

尽管 'C' 语言允许您根据自己的意愿和方便使用变量名,但您必须遵守某些规则。

  1. 变量名只能是字母(A, a, B, b)、数字(0, 1, 2)和下划线(_)的组合。
  2. 变量名应以字母开头,一些编译器也支持下划线。但不能以数字开头。
  3. 由于 C 语言是区分大小写的语言,大写字母(NUM)和小写字母(num)被视为不同。
  4. 根据 ANSI 标准,使用简短、简单且有意义的变量名(不超过 31 个字符)更安全。
  5. 在命名变量时,不允许使用特殊字符(/、;、:)和符号(#、@)。
  6. 变量名必须与 C 语言关键字(printf, scanf)不同。
  7.  不允许有空格。
有效的变量名 无效的变量名
_age 17age
num,NUM int, print
Stud1, Stud_2 Stud#,Stud  1,Stud@2

如何声明变量?

在 C 语言编程中,程序中将要使用的所有变量都必须先声明。这有两个原因:

  1. 编译器必须知道为变量保留多少空间才能正常工作。分配的空间必须足够,不能过大,以免造成内存滥用。
  2. 编译器必须识别数据是数字还是字母,这就是为什么必须声明“类型”。除此之外,应为其指定一个有意义的名称(称为标识符),以便于操作。

变量声明语法涉及两个重要部分,如下所示:一个是数据类型,另一个是变量名。变量声明必须始终以分号结尾,否则编译器将引发终止错误。此外,如果多个变量具有相同的数据类型,C 语言允许在一行中声明多个变量

datatype variable_name; 

基本上,有三种非常常用的数据类型声明。可以通过这个例子来说明:

int num, no; 
char a, b; 
float f1,f2; 

这里,'int' 表示整数,'char' 表示单个字符,'float' 表示小数。int、char、float 是数据类型,num、no、a、b、f1、f2 是标识符(变量名)。当一个变量用特定的数据类型声明后,它只能接受该特定数据类型的值。在这里,num 只能接受整数值,如果我们试图将任何其他值(如字符)存储到 num 中,它将引发错误。

如何初始化变量?

声明完成后,您可以根据需要自由使用分配的空间(即变量)。这个已声明的变量最初包含垃圾值,即未定义的值。如果您希望初始分配一些值,可以使用赋值运算符“=”来完成。变量初始化可以在声明时进行。语法如下。

datatype variable_name = value;

下面是一些变量初始化的示例:

int num = 10, no =20; 
char a = ‘A’, b = ‘B’; 
float f1 = 2.5 ,f2 = 5.2;

C 语言中的左值(Lvalues)和右值(Rvalues)是什么?

左值 (Lvalues) 实际上指的是变量的地址位置。它通常出现在运算符(=, >)的左侧。因此,您可以说一个标识符是一个可修改的左值,它可以变化。

#include <stdio.h>
main()
{
     int num1,num2,total;
     num1=4;
     num2=5;
     total=num1+num2;
     printf("Total number is %d",total);
} 

在这个程序中,num1、num2、total 分别在第 5、6 和 7 行充当左值。

右值 (Rvalues) 通常是被赋的值,即存储在已分配地址中的数据。它可以是任何字符或数字,通常出现在运算符的右侧。在上述程序中,第 5 行和第 6 行的 4、5 是右值。

所以,最后我们可以说,左值表示对象的身份,右值表示它的值。

C 语言中变量的类型

C 语言作为一种静态语言,包含 5 种类型的变量。它们如下所列:

  1. 局部变量
  2. 全局变量
  3. 静态变量
  4. 自动变量
  5. 外部变量

局部变量

局部变量是在函数或代码块内部定义的变量。该变量的作用域仅限于该函数或代码块。因此,我们可以说这种类型的变量只有局部作用域。

void funct()
{
      int num = 5;   // Local Variable 
} 

全局变量

全局变量是在函数或代码块外部定义的变量。全局变量的作用域在整个程序中都有效,可以被任何函数或代码块使用。全局变量的值可以在函数内部被修改。

int g = 10;   // Global Variable
void funct()
{
      int num = 5;   // Local Variable 
} 

静态变量

如果一个变量前面带有关键字 static,则称其为静态变量。静态变量在函数调用期间很有用,因为声明为静态的变量会在每次函数调用时保留其值。下面的代码片段将说明静态变量和局部变量的工作方式。

#include <stdio.h>
int main()
{
void funct()
{
      static int a =10; // Static Variable
      int num = 5;     // Local Variable
      num = num + 1;
      a = a + 1;
      printf("a = %d\t and Num =%d\n",a,num);
}
  funct();
  funct();
  funct();

}

输出

a = 11   and Num =6
a = 12   and Num =6
a = 13   and Num =6

自动变量

默认情况下,在 C 语言中,所有局部变量都是自动变量,因为它们在进入代码块时分配内存,在退出代码块时释放内存。使用关键字“auto”,我们可以显式地将一个变量声明为自动变量。

void funct()
{
      int num1 = 5;   // implicitly automatic  Variable 
      auto int num2 = 10;   // Explicitly automatic variable
} 

外部变量

在 C 语言中,一个前面带有关键字 'extern' 的变量被称为外部变量,其作用域在源文件之间有效。更具体地说,变量的作用域不局限于单个文件,而是对外部文件也可用。外部变量也是全局变量。

file.h

extern int num1 = 10;  //external variable   

program.h

#include <file.h>
#include <stdio.h>
main()
{
       int num2,total;
       num2=5;
       total=num1+num2;
       printf("Total is %d",total);
} 

输出

Total is 15