如果已存在同名的全局变量和局部变量(c ++),如何访问变量?

时间:2018-05-20 09:45:52

标签: c++ global-variables local-variables

以下是代码:

#include <iostream>
using namespace std;
int x = 1;
void fun()
{
    int x = 2;
    {
       int x = 3;
       cout<<::x<<endl;
    }
}
int main()
{
    fun();
    return 0;
}

我想知道的是,有没有办法在函数fun中的大括号中访问值为2的x。当我写x时,它打印3,当:: x打印1.所以如何访问值为2的x,以及我们将其称为全局变量或局部变量。

由于

编辑1:要求知识,想知道这样的事情是否可能。

1 个答案:

答案 0 :(得分:0)

  

我想知道的是,有没有办法在函数fun中的大括号中访问值为2的x。

无法访问它。唯一的,黑客&#39;&#39;访问它是:

int x;
{
    int &xOuter = x;
    int x;
    // use xOuter here to access x of outer scope
}
  

我们称之为全局变量还是局部变量。

它是一个局部变量。

我建议不要这样做,这会造成混乱。要避免这种情况,请使用编译器选项,例如gcc&#39; -Wshadow来获取此类案例的警告。