我最近在学习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;
}
答案 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;
}