【问题标题】:how to access a variable when a global and local variable of same name are already present(c++)?当已经存在同名的全局和局部变量时如何访问变量(c ++)?
【发布时间】:2018-10-30 04:54:54
【问题描述】:

代码如下:

#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。以及我们将其称为全局变量还是局部变量。

谢谢

Edit 1: Asking Just For Knowledge,想知道这样的事情是否可能。

【问题讨论】:

  • 这是不可能的。如果有嵌套块。它只会造成混乱。为什么要访问它。?
  • 全球和本地对您意味着什么?
  • 我只是想知道这是否可能。

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


【解决方案1】:

我想知道的是,有没有什么方法可以访问函数 fun 内大括号中值为 2 的 x。

没有办法访问它。唯一可以访问它的 ,,hack'' 是:

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

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

这是一个局部变量。

我不推荐这种做法,它会引起混乱。为避免这种情况,请使用编译器选项,例如 gcc 的 -Wshadow,以在此类情况下获得警告。

【讨论】:

  • 是的,这是个好主意。这就是我要问的
猜你喜欢
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多