变量是与可以更改的值相关联的名称。例如,当我写int num=20;
时,变量名是num
,它与值 20 相关联,int
是数据类型,表示该变量可以保存整数值。我们将在下一个教程中介绍数据类型。在本教程中,我们将讨论变量。
在 C++ 中声明变量的语法
data_type variable1_name = value1, variable2_name = value2;
例如:
int num1=20, num2=100;
我们也可以这样写:
int num1,num2;
num1=20;
num2=100;
变量的类型
变量可以根据其数据类型进行分类。例如,在上面的例子中,我们看到了整数类型变量。以下是 C++ 中可用的变量类型。
int
:这些类型的变量保存整数值。
char
:保存字符值,如'c'
,'F'
,'B'
,'p'
,'q'
等。
bool
:保存布尔值为true
或false
。
double
:双精度浮点值。
float
:单精度浮点值。
基于作用域的变量类型
在进一步讨论之前,先讨论什么是作用域。当我们讨论 Hello World 程序时,我们在程序中看到了这样的大括号:
int main {
//Some code
}
在这些花括号内声明的任何变量都限制在这些花括号中,如果你在main()
函数中声明一个变量并尝试在main()
函数之外使用该变量,那么你将得到编译错误。
现在我们已经理解了什么是作用域。让我们根据作用域转向变量类型。
- 全局变量
- 局部变量
全局变量
在任何函数之外声明的变量(包括main
)也称为全局变量。全局变量拥有整个程序中的作用域,它们可以在程序的任何地方,主函数,用户定义的函数中的任何地方访问。
让我们举个例子来理解它:
全局变量示例
这里我们有一个全局变量myVar
,它在main
之外声明。我们在main()
函数中访问了变量两次而没有任何问题。
#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;
}
输出:
Value of myVar: A
Value of myVar: Z
局部变量
局部变量在任何用户定义函数,主函数,循环或任何控制语句(if
,if-else
等)的大括号内声明,并且其作用域限制在这些大括号内。
局部变量的例子
#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++ 中具有相同的名称吗?
让我们看一个具有相同名称的全局变量和局部变量的示例。
#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;
}
输出:
Funcn call: B
Value of myVar: A
Funcn call: B
Value of myVar: Z
正如您所看到的,当我在main
函数中更改myVar
的值时,它只更改了全局变量myVar
的值,因为局部变量myVar
作用域仅限于函数myFuncn()
。