C++如何取得外层作用域的同名变量

同学问我这样的问题,例如在下面的代码中:

#include <iostream>
using namespace std;

int main() {
    int a = 1;
    {
        int a = 2;
        cout << a << endl;
    }

    return 0;
}

如何在内部访问到main函数的a

阅读 5.6k
3 个回答

你可以这样做:

#include <iostream>
using namespace std;

int main() {
    int a = 1;
    {   
        int a = 2;

        // 输出 1 而不是 2。
        cout << *(int *)((char *)&a + sizeof(a)) << endl;

    return 0;
}

好吧,我承认我是故意来搞笑的,请清踩~

没有办法,里外总有一个你得换个名字。

只能做引用了:

#include <iostream>
using namespace std;

int main() {
    int a = 1;
    int &b = a;
    {
        int a = 2;
        cout << b << endl;
    }

    return 0;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题