请参阅代码段:
#include <iostream>
using namespace std;
int var = 20;
int main()
{
int var =8;
cout << "local var=" << var << "Global var =" << ::var << endl;
return 0;
}
是否还有其他方法可以打印全局变量,即在main重新初始化的main中有20个?
谢谢,
答案 0 :(得分:3)
如果不修改cout
声明之外的代码,则别无他法。很简单,你可以间接地main
访问::var
- 通过另一个变量作为var
的引用或指针,或复制var
的值,或者返回任何函数那些东西等...(与其他一些语言不同,没有可访问的元数据携带包含全局或调用上下文的堆栈帧/局部变量等的对象。)
答案 1 :(得分:3)
你的意思是:
int &p = ::var; // Using a reference
int var =8;
cout << "local var=" << var << "Global var =" << p << endl; //Play with p
答案 2 :(得分:2)
它还没有被重新初始化&#34;,本地声明只会影响全局声明。您必须使用范围解析运算符。