当同名的全局和局部变量已经存在时如何访问变量(c ++)?
how to access a variable when a global and local variable of same name are already present(c++)?
代码如下:
#include <iostream>
using namespace std;
int x = 1;
void fun()
{
int x = 2;
{
int x = 3;
cout<<::x<<endl;
}
}
int main()
{
fun();
return 0;
}
我想知道的是,有什么方法可以访问fun.函数中大括号中的值为2的x。当我写 x 时,它打印 3,当 ::x 时,它打印 1。那么如何使用值 2 访问 x。以及我们称它为全局变量还是局部变量。
谢谢
编辑一:求知欲,想知道这样的事情是否可能。
What I want to know is, is there any way to access the x with value 2 in the braces inside the function fun.
无法访问。访问它的唯一 ,hack'' 是:
int x;
{
int &xOuter = x;
int x;
// use xOuter here to access x of outer scope
}
whether we call it a global variable or local variable.
这是一个局部变量。
我反对这种做法,它会引起混乱。为避免这种情况,请使用编译器选项,例如 gcc 的 -Wshadow
以获得针对此类情况的警告。
代码如下:
#include <iostream>
using namespace std;
int x = 1;
void fun()
{
int x = 2;
{
int x = 3;
cout<<::x<<endl;
}
}
int main()
{
fun();
return 0;
}
我想知道的是,有什么方法可以访问fun.函数中大括号中的值为2的x。当我写 x 时,它打印 3,当 ::x 时,它打印 1。那么如何使用值 2 访问 x。以及我们称它为全局变量还是局部变量。
谢谢
编辑一:求知欲,想知道这样的事情是否可能。
What I want to know is, is there any way to access the x with value 2 in the braces inside the function fun.
无法访问。访问它的唯一 ,hack'' 是:
int x;
{
int &xOuter = x;
int x;
// use xOuter here to access x of outer scope
}
whether we call it a global variable or local variable.
这是一个局部变量。
我反对这种做法,它会引起混乱。为避免这种情况,请使用编译器选项,例如 gcc 的 -Wshadow
以获得针对此类情况的警告。