企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 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()`。