【考点 · 3级】变量的作用域,属于 C++ 基础语法 —— 变量能在哪些地方被"看见"和使用。
【说人话】
作用域就是变量的"有效范围"。在花括号 {} 里定义的变量,只能在那个花括号里用。出了花括号就"死了",编译器不认识它。
三个核心规则:
i,出了循环就没了。很多人在循环外还想用 i,结果编译报错。解决办法:把 i 定义在循环外面。
level = 0level = 1{} 块里定义 level = 2{},定义 level = 3#include <iostream>
using namespace std;
int level = 0; // 全局 level
int main() {
int level = 1; // 遮蔽全局
cout << "第1层: " << level << endl;
{ // 第二层作用域
int level = 2; // 遮蔽外层
cout << "第2层: " << level << endl;
{ // 第三层作用域
int level = 3; // 遮蔽外层
cout << "第3层: " << level << endl;
} // 第三层结束,level 恢复为 2
cout << "回到第2层: " << level << endl;
} // 第二层结束,level 恢复为 1
cout << "回到第1层: " << level << endl;
return 0;
}
// 输出:第1层: 1
// 第2层: 2
// 第3层: 3
// 回到第2层: 2
// 回到第1层: 1
{} 定义同名变量就产生遮蔽,出了 {} 就恢复。这就是作用域的本质 —— 内层优先,外层兜底。
for(int i=0;...){} 之后 i 就不存在了。竞赛中经常要在循环外用循环变量,记得提前定义。