C++中存在同名块级变量时,如何访问外层局部变量?
如何在内层代码块访问外层同名局部变量?
当内层代码块定义了和外层同名的变量时,内层变量会遮蔽外层的同名变量,直接使用变量名会优先访问内层的。要访问外层的a(值为20),可以通过以下两种简单方法实现:
方法一:使用引用提前绑定外层变量
在外层代码块中,给外层a定义一个引用,内层通过这个引用就能访问到外层变量:
#include <iostream> using namespace std; int main() { int a = 20; // 要访问的变量 int& outer_a = a; // 绑定外层a的引用 { int a = 30; cout << outer_a << endl; // 输出20 } return 0; }
方法二:使用指针保存外层变量地址
在外层保存外层a的地址,内层通过解引用指针来访问外层变量:
#include <iostream> using namespace std; int main() { int a = 20; // 要访问的变量 int* p_outer_a = &a; // 保存外层a的地址 { int a = 30; cout << *p_outer_a << endl; // 输出20 } return 0; }
注意
不能直接用::a来访问外层局部变量,因为作用域解析符::仅用于访问全局命名空间的变量或者类/结构体的成员,局部变量不属于这类范畴,所以无法生效。
内容的提问来源于stack exchange,提问作者Bharat2044
相关产品推荐
相关产品推荐

