【考点 · 3级】值传递 vs 引用传递 — 函数参数的两种传递方式,属于函数基础。
【说人话】
值传递:函数拿到的是参数的副本,改了副本不影响原变量。就像你复印了一份文件,在复印件上乱涂乱画,原件没事。
引用传递:函数拿到的是原变量的别名,改了就是改了原件。加 & 就是引用传递。
💡 核心易错点:想在函数里修改外部变量的值?必须用引用传递。值传递改了白改!
increment(int &val, int times),将 val 加上 times 次(每次 +1),在 main 中调用后输出结果。& 即可。
#include <iostream>
using namespace std;
void increment(int &val, int times) {
for (int i = 0; i < times; i++) {
val++; // 引用传递,直接修改原变量
}
}
int main() {
int n = 0;
increment(n, 5);
cout << n << endl; // 输出 5
return 0;
}
& 就是引用传递。循环 times 次每次 +1,最终 val 增加了 times。
1️⃣ 忘记加 & 就是值传递 — void f(int n) 和 void f(int &n) 天差地别
2️⃣ const 引用不能改值 — const int &n 只能读不能写,适合传大对象又不想被改
3️⃣ 引用必须初始化 — 声明时就要绑定,不能先声明再赋值
4️⃣ 数组不能直接用引用传 — 传数组本质是传指针,不是引用