作用域:局部 vs 全局
同名时局部遮蔽全局 —— 每段代码看到的 x,取决于它身处哪个作用域
源代码 · 作用域分层
全局作用域(文件级)
func() 的局部作用域 { }
main() 的局部作用域 { }
int
x =
1
;
// 全局 x
void
func() {
int
x =
100
;
// 局部 x,遮蔽全局
cout << x;
// → 100
}
int
main() {
cout << x;
// → 1(无局部,用全局)
func();
::x =
7
;
// :: 强行访问全局
}
可见性
内存中的变量
全局 x
作用域:定义点 → 文件结束
1
func() 内的局部 x
作用域:仅 func 的 { } 内
100
func 返回 → 局部 x 随帧销毁
▶ 重播