# C++ 中的变量

> 原文： [https://beginnersbook.com/2017/08/cpp-variables/](https://beginnersbook.com/2017/08/cpp-variables/)

变量是与可以更改的值相关联的名称。例如，当我写`int num=20;`时，变量名是`num`，它与值 20 相关联，`int`是数据类型，表示该变量可以保存整数值。我们将在下一个教程中介绍数据类型。在本教程中，我们将讨论变量。

## 在 C++ 中声明变量的语法

```cpp
data_type variable1_name = value1, variable2_name = value2;
```

**例如：**

```cpp
int num1=20, num2=100;
```

我们也可以这样写：

```cpp
int num1,num2;
num1=20;
num2=100;
```

## 变量的类型

变量可以根据其数据类型进行分类。例如，在上面的例子中，我们看到了整数类型变量。以下是 C++ 中可用的变量类型。

**`int`** ：这些类型的变量保存整数值。

**`char`** ：保存字符值，如`'c'`，`'F'`，`'B'`，`'p'`，`'q'`等。

**`bool`** ：保存布尔值为`true`或`false`。

**`double`** ：双精度浮点值。

**`float`** ：单精度浮点值。

## 基于作用域的变量类型

在进一步讨论之前，先讨论什么是作用域。当我们讨论 [Hello World 程序](https://beginnersbook.com/2017/08/first-cpp-program/)时，我们在程序中看到了这样的大括号：

```cpp
int main {

//Some code

}
```

在这些花括号内声明的任何变量都限制在这些花括号中，如果你在`main()`函数中声明一个变量并尝试在`main()`函数之外使用该变量，那么你将得到编译错误。

现在我们已经理解了什么是作用域。让我们根据作用域转向变量类型。

1. 全局变量
2. 局部变量

### 全局变量

在任何函数之外声明的变量（包括`main`）也称为全局变量。全局变量拥有整个程序中的作用域，它们可以在程序的任何地方，主函数，用户定义的函数中的任何地方访问。

让我们举个例子来理解它：

#### 全局变量示例

这里我们有一个全局变量`myVar`，它在`main`之外声明。我们在`main()`函数中访问了变量两次而没有任何问题。

```cpp
#include <iostream>
using namespace std;
// This is a global variable
char myVar = 'A';
int main()
{
   cout <<"Value of myVar: "<< myVar<<endl;
   myVar='Z';
   cout <<"Value of myVar: "<< myVar;
   return 0;
}
```

**输出：**

```cpp
Value of myVar: A
Value of myVar: Z
```

### 局部变量

局部变量在任何用户定义函数，主函数，循环或任何控制语句（`if`，`if-else`等）的大括号内声明，并且其作用域限制在这些大括号内。

#### 局部变量的例子

```cpp
#include <iostream>
using namespace std;

char myFuncn() {
// This is a local variable
char myVar = 'A';
}
int main()
{
   cout <<"Value of myVar: "<< myVar<<endl;
   myVar='Z';
   cout <<"Value of myVar: "<< myVar;
   return 0;
}
```

**输出：**

编译时错误，因为我们试图在其作用域之外访问变量`myVar`。 `myVar`的作用域仅限于这些括号内的函数体`myFuncn()`。

## 全局变量和局部变量可以在 C++ 中具有相同的名称吗？

让我们看一个具有相同名称的全局变量和局部变量的示例。

```cpp
#include <iostream>
using namespace std;
// This is a global variable
char myVar = 'A';
char myFuncn() {
   // This is a local variable
   char myVar = 'B';
   return myVar;
}
int main()
{
   cout <<"Funcn call: "<< myFuncn()<<endl;
   cout <<"Value of myVar: "<< myVar<<endl;
   myVar='Z';
   cout <<"Funcn call: "<< myFuncn()<<endl;
   cout <<"Value of myVar: "<< myVar<<endl;
   return 0;
}
```

**输出：**

```cpp
Funcn call: B
Value of myVar: A
Funcn call: B
Value of myVar: Z
```

正如您所看到的，当我在`main`函数中更改`myVar`的值时，它只更改了全局变量`myVar`的值，因为局部变量`myVar`作用域仅限于函数`myFuncn()`。