值传递 vs 引用传递 —— swap 为什么成败两样

值传递交换的是「副本」,函数返回后实参纹丝不动;引用传递操作的是「本体」,实参真的被交换
值传递 · pass by value void swap(int x, int y) main 栈帧 a 5 b 8 拷贝一份副本 swap 栈帧(副本) x 5 y 8 副本被回收 → main 中 a=5, b=8 交换失败 ✗ 引用传递 · pass by reference void swap(int &x, int &y) main 栈帧 a 5 b 8 x、y 是 a、b 的别名 swap 栈帧(别名) x 即 a 5 y 即 b 8 改别名就是改本体 → main 中 a=8, b=5 交换成功 ✓