如果在C ++中存在具有相同名称的局部变量,如何访问全局变量?

在下面的示例中,

我们看到有一个局部变量与全局变量同名。如果执行以下程序,则输出为:

#include <iostream>
using namespace std;

//全局变量
int var = 10;

int main(){
    //局部变量
    //外部范围
    int var = 5;
    {
        //内部范围
        int var = 1;
        cout << "var(inner scope): " << var << endl;
    }
    cout << "var(outer scope): " << var << endl;

    return 0;
}

输出:

var(inner scope): 1
var(outer scope): 5

在上面的示例中,我们看到全局变量也被声明为局部变量,这就是为什么它采用局部范围值的原因。为确保使用全局范围值,我们需要使用范围解析运算符来填充全局范围值。

下面是修改后的版本:

#include <iostream>
using namespace std;

//全局变量
int var = 10;

int main(){
    //局部变量
    //外部范围
    int var = 5;
    {
        //内部范围
        int var = 1;
        cout << "var(inner scope): " << var << endl;
        //使用范围解析运算符访问全局值
        cout << "var(global value in inner scope): " << ::var << endl;
    }
    cout << "var(outer scope): " << var << endl;
    //使用范围解析运算符访问全局值
    cout << "var(global value in outer scope): " << ::var << endl;

    return 0;
}

输出:

var(inner scope): 1
var(global value in inner scope): 10
var(outer scope): 5
var(global value in outer scope): 10