如何访问其他本地区域的局部变量?

时间:2014-05-14 06:41:00

标签: c++ visual-c++

我最近在学习C ++语言。

我一直想知道如何在本地区域[2]访问本地区[1]的本地变量“a”,并查看以下代码。

怎么做?

#include "stdafx.h"
using namespace std;

///// global area /////
int a = 1;

int _tmain(int argc, _TCHAR* argv[])
{
    ///// local area[1] /////
    int a = 2; //<= how to access this "a" at local area[2]?

    cout << "global area [a] : " << ::a << endl;
    cout << "local area[1] [a] : " << a << endl;
    {
        ///// local area[2] /////
        int a = 3;
        cout << "global area [a] : " << ::a << endl;
        cout << "local area[2] [a] : " << a << endl;
        cout << "local area[1] [a] : " << ?????? << endl;
    }

    return 0;
}

2 个答案:

答案 0 :(得分:1)

你不能这样做。在内部作用域中声明变量时,它会遮蔽外部作用域的变量,并且语言不像对全局变量那样提供任何访问它的方法。

即使它确实支持了这一点,但将变量命名为相同仍然是不好的做法。想象一下,必须处理大量的范围和所需的复杂性!

只需为中间变量使用不同的变量名称,就可以更轻松地编写和维护代码。

答案 1 :(得分:1)

您需要外部范围的一些帮助:

using std::cout;
using std::endl;
int main(int argc, char* argv[])
{
    ///// local area[1] /////
    int a = 2; //<= how to access this "a" at local area[2]?
    int& alternative_name = a;

    cout << "global area [a] : " << ::a << endl;
    cout << "local area[1] [a] : " << a << endl;
    {
        ///// local area[2] /////
        int a = 3;
        cout << "global area [a] : " << ::a << endl;
        cout << "local area[2] [a] : " << a << endl;
        cout << "local area[1] [a] : " << alternative_name << endl;
    }

    return 0;
}