作用域是指程序的一部分,大致上变量可以在三个地方被声明:
C++ 中的变量作用域主要分为两部分:
我们将在后续章节中学习什么是函数及其参数。现在让我们解释一下局部变量和全局变量是什么。
C++ 变量的作用域
局部变量
在函数或块内部声明的变量是局部变量。它们只能被该函数或代码块内的语句使用。局部变量对外部函数是未知的。
示例
以下是一个使用局部变量的示例:
#include <iostream>
using namespace std;
int main () {
int a, b;
int c;
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
全局变量
全局变量定义在所有函数之外,通常在程序的顶部。全局变量在其整个生命周期中都将保持其值。
全局变量可以被任何函数访问。也就是说,全局变量在其声明之后在整个程序中都可供使用。
示例
以下是一个使用全局和局部变量的示例:
#include <iostream>
using namespace std;
int g;
int main () {
int a, b;
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
具有相同名称的局部和全局变量
程序可以为局部和全局变量使用相同的名称,但在函数内部局部变量的值优先。
示例
以下是一个具有相同名称的局部和全局变量的示例:
#include <iostream>
using namespace std;
int g = 20;
int main () {
int g = 10;
cout << g;
return 0;
}
当上述代码被编译和执行时,它产生以下结果:
10
访问全局变量
当有一个同名的局部变量时,你可以通过在变量名之前使用作用域解析运算符(::)来访问全局变量。
示例
在以下示例中,我们有同名的全局和局部变量,并访问和打印全局变量的值:
#include <iostream>
using namespace std;
int g = 20;
int main() {
int g = 10;
cout << "Value of g (Local variable): " << g;
cout << endl;
cout << "Value of g (Global variable): " << ::g;
return 0;
}
当上述代码被编译和执行时,它产生以下结果:
Value of g (Local variable): 10
Value of g (Global variable): 20
初始化局部和全局变量
当定义局部变量时,系统不会初始化它,你必须自己初始化它。全局变量在定义时由系统自动初始化如下:
数据类型 |
初始化值 |
int |
0 |
char |
'\0' |
float |
0 |
double |
0 |
指针 |
NULL |
良好的编程实践是适当地初始化变量,否则有时程序可能会产生意外的结果。