看清变量看得见的范围
这一课只练一件事:弄清变量的 ,看懂 改的是副本。完成四个小任务:选出 出了函数看不见,确认 addOne(n) 不会改外面的 n,再认识同名和 。这里不会在浏览器里运行 C++。
任务 1:局部变量和值传递
函数 void addOne(int x) 里写了 int t = x + 1;。先判断这个 t 的 :它在 main 里能不能用,再判断 addOne(n) 会不会改外面的 n。点不认识的词可看基础解释。
必会:能说明变量在哪个代码块可用,能解释函数里改的是副本。这里不会在浏览器里运行 C++,只练习选择。
函数里的 t,main 能不能用?局部变量 · 必会
addOne(n) 后外面的 n?值传递 · 必会
任务 2:从调用走到外面的 n
最小示例:外面 int n = 5;,调用 addOne(n)。函数里的 x 是副本,这就是 :x = x + 1 不会改外面的 n。按顺序点三步。这里不会在浏览器里运行 C++。
必会:能解释“看起来改了、其实没改”。边界:只看函数里的 x 会误以为 n 变了;要再看外面的 n。
- void addOne(int x) {
- x = x + 1;
- }
- int n = 5; addOne(n); // n 仍是 5
对照走完了,现在亲手把这个形参敲出来。函数体里写的是 x = x + 1,所以要的是 的一份副本,而不是外面的 n。下面是只读脚手架,只留一空给你敲键盘。
- void addOne() {
- x = x + 1; // 改的只是副本
- }
- int n = 5; addOne(n); // n 仍是 5
void addOne(int x) { x = x + 1; } // 形参写成 int x,外面的 n 不会被改动
任务 3:同名变量和引用参数
建议掌握:函数里再写一个 int n,它和外面的 n 不是同一个。只有确实要改原变量时,才把参数写成 int &x。
必会 / 建议掌握 / 拓展:必会是局部变量和值传递。能少用就少用。指针和静态局部变量是拓展,现在不用当硬门槛。
- void addOne(int &x) { x = x + 1; }
- int n = 5; addOne(n); // 这时 n 变成 6
- // 函数里再写 int n,会挡住外面的 n
- // 指针 / 全局变量是拓展:现在先分清副本和原变量
先选出同名变量的正确理解:
再选出何时需要修改原变量:
任务 4:随机小测,看看你是否真的懂了
每次从本课题库抽出三道不同的选择题。题目与解析已通过校验,答完后看解析,不要只看分数;拿不准就回到对应任务再看一遍。