C++ 变量


2022年7月21日, Learn eTutorial
1954

通过变量,我们获得程序可以操作的命名存储。C++中的每个变量都有一个唯一的类型,该类型指定其内存大小和组织、可以存储在其中的值的范围以及可以对该变量执行的操作范围。

在程序执行期间,C++变量用于在内存区域中存储数据,程序可以更新或使用这些数据。变量的名称可以包含字母、数字和下划线字符。它必须以字母或下划线开头。因为C++是大小写敏感的,所以可以区分大写和小写字母。

C++中变量的定义

变量定义指示编译器为变量分配存储的位置和数量。变量定义指定一个数据类型,并包含一个或多个该类型变量的列表,它们是

类型 变量列表;

在这里,类型必须是有效的C++数据类型,例如char、w_char、int、float、double、bool或任何其他用户定义的对象,而变量列表可以包含一个或多个标识符名称,并用逗号分隔。  下面是几个有效的声明。


int i, j, k;
char c, ch;
float f, salary;
double d;

 

行 `int i, j, k;` 声明并定义了变量i、j和k,并告诉编译器创建名为i、j和k的变量,它们的类型应该是int。

变量可以在声明时初始化。初始化器是等号后跟一个常量表达式,如下所示


type variable_name = value;
 

以下是C++中存在的基本变量类型。
 

类型 描述
char 通常,它是一个八位字节,这种类型是一种整数。
bool 存储的值是真(true)或假(false)。
int 它主要用于表示整数。
float “浮点数”在非正式场合被称为“float”。根据定义,它是一种编译器内置的基本数据类型,用于定义带有浮动小数点的数值。许多编程语言都支持float数据类型,包括C、C++、C#等。
double Double用于存储64位双精度浮点值,而int用于存储32位二进制补码整数
void void用于表示没有数据
wchar_t   string 它是一种宽字符类型。  “Hello world”是一种文本,string用于存储文本字符串。

C++中的变量声明

变量声明向编译器保证存在一个具有给定类型和名称的唯一变量,从而允许编译器在没有关于该变量的完整信息的情况下继续进行进一步的编译。变量声明仅在编译时有其意义。在链接程序时,编译器需要实际的变量定义。

当使用多个文件并在其中一个文件中定义变量时,变量声明很有用,该变量在程序链接时将可用。在任何你想声明变量的地方,使用 extern 关键字。一个变量可以在C++程序中多次声明,但只能在文件、函数或代码块中定义一次。

变量是在随机存取存储器(RAM)中创建的。众所周知,RAM是一种临时内存,因此很明显,其中保存的所有数据也将是临时的。它仅在执行期间使用。当程序结束时,存储在变量中的信息会自动删除。

如何声明变量?


type_ name variable=value;
 
  • type_name:它主要指定变量的数据类型。
  • variable:  它是变量的名称
  • =  它是一个赋值运算符,用于初始化变量
  • value:值主要用于初始化变量

声明变量的规则

  • 变量可以是字母、数字或下划线(_)。
  • 变量的第一个字母应该是字母或下划线。`9kg`、`$10salary` 和 `6second` 都是无效的。
  • 变量名中不能有任何额外的空格。变量 'my var' 是无效的。
  • 你可以同时使用大写和小写字母。常量传统上用大写字母书写,而用户定义的变量传统上用小写字母书写。
  • 不允许使用特殊符号作为变量名。
  • 没有人可以使用保留字作为变量名。Int、for、while 和类似的词不能用作变量名。
  • 变量中的字符数不应超过31个。
  • 不能为一个变量声明多个数据类型。它应该只为一种数据类型声明。
     

变量声明和变量定义的主要区别

变量声明描述了变量在使用前最初声明的部分。
而变量定义告诉我们变量被分配内存位置和值的部分。
变量定义和声明通常是同时进行的。
 

我们将如何初始化变量?

为了初始化变量,我们首先需要指定类型,然后给它赋一个值。


type variableName = value;
 

其中 type 是 C++ 类型(如 int),而 variableName 是变量的名称(如 x 或 myName)。等号用于给变量赋值。

看看下面的例子,学习如何创建一个应该存储数字的变量

示例:创建int类型的变量 "myNum" 并赋值 20


int myNum= 20;
cout << myNum;

 

另一个选择是声明一个变量而不给它赋值,稍后再赋值。


type variableName;
variableName = value;
 

让我们通过一个例子来理解如何做到这一点。

 

示例:声明一个变量而不给它赋值,稍后再赋值。


int myNum;
myNum= 20;
cout << myNum;
 

如果给一个现有变量赋新值,旧值将被替换。让我们通过一个例子来理解它。

示例


int myNum= 20;  //here myNum is 20 
myNum= 45;  //Now myNum 45
cout << myNum;  // Outputs 45
 

如何在C++中声明多个变量?

为了声明多个属于相同数据类型的变量,使用逗号分隔的列表。

示例


int a= 10,b= 30,c=70;
cout << a + b + c;
 

用单个值赋给多个变量

示例


int a, b, c;
a = b = c = 550;
cout << a + b + c;
 

上面的例子清楚地展示了如何用单个值赋给多个变量。

我们将如何显示变量?

显示变量时,使用 cout 对象和 << 运算符。使用 << 运算符将文本和变量分开,然后将它们组合起来。

我们将如何显示变量?


#include 
using namespace std;

int main() {
  int myAge = 29;
  cout << "I am " << myAge << " years old and working for Learn eTutorials";
  return 0;
}

 

输出


I am 29 years old and working for Learn eTutorials.

左值和右值

在C++中,有两种类型的表达式。

  1. 左值:引用内存位置的表达式称为“左值”表达式。左值可以出现在赋值的左侧或右侧。
  2. 右值:术语“右值”指的是存储在特定地址的内存中的数据值。右值可以出现在赋值的右侧,但不能出现在左侧,因为右值是不能被赋值的表达式。

变量是左值,因此可以出现在赋值的左侧。数字字面量是右值,因此不能被赋值,也不能出现在左侧。

有效和无效语句的示例


int g = 70; (it is a valid statement)
20= 30;  (invalid statement because 20 is a numeric value that cant appear on left-hand side hence compile-time error will occur)
 

C++中的变量作用域

作用域是程序的一部分,变量通常可以在三个地方定义。局部变量是仅存在于函数或块内的变量。形式参数通常被称为函数参数。全局变量是在所有函数之外可见或始终存在的变量。  在本节中,我们将定义局部变量和全局变量。

变量类型

根据C++中变量的作用域,有三种不同类型的变量

  1. 局部变量

    局部变量是在块、方法或构造函数中定义的变量。这些变量在进入块或调用函数时创建,在退出块或函数调用返回时被销毁。这些变量的作用域仅存在于它们被声明的块内。也就是说,我们只能在该块内访问此变量,并且非常有必要初始化局部变量。

  2. 实例变量 

    称为“实例变量”的非静态变量是在类中声明但不在任何方法、构造函数或块内的变量。由于实例变量是在类中声明的,它们在创建类对象时被创建,在对象被销毁时被丢弃。我们可以主要对实例变量使用访问修饰符。如果未指定访问修饰符,则将使用默认访问修饰符。实例变量不需要初始化。只有通过创建对象才能访问实例变量。

  3. 静态变量

    静态变量的另一个名称是类变量。静态变量:静态变量的另一个名称是类变量。这些变量的声明方式与实例变量相同,但静态变量使用 static 关键字在类内部、任何方法构造函数或块之外声明。每个类只允许有一个静态变量的实例。静态变量在程序执行开始时创建,并在执行结束时立即销毁。静态变量不需要初始化,其默认值为0。

Types of Variable

局部和全局变量是如何初始化的?

局部变量在定义时必须由用户初始化,因为系统不会自动执行此操作。  但全局变量由系统自动初始化。C++中的全局变量被描述为可以在整个程序的任何地方使用或访问的变量。

How local and global variables ae initialized?

局部变量

局部变量是在函数或块内声明的变量。只有包含在该函数或代码块内的语句才能使用它们。在它们自己的函数之外,局部变量是未知或不可见的。 

这是一个使用局部变量的例子


#include 
using namespace std; 
int main () {
   // Local variable declaration:
   int x, y;
   int z;
 
   // actual initialization
   x = 40;
   y = 80;
   z = x + y;
 
   cout << c;
     return 0;
}

 

全局变量

全局变量通常在程序顶部、所有函数之外定义。在程序运行期间,全局变量将保持其值。任何函数都可以访问全局变量。换句话说,一旦声明了全局变量,就可以在整个程序中使用它。

以下是全局和局部变量的示例
 


#include 
using namespace std;
 
// Global variable declaration:
int g;
 
int main () {
   // Local variable declaration:
   int x, y;
 
   // actual initialization
   x = 20;
   y = 40;
   g = x + y;
  
   cout << g;
 
   return 0;
}