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

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

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

#include <iostream>
using namespace std;

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

    return 0;
}

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


你可以这样做:

#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;
}

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

【热门文章】
【热门文章】