4.3.交换函数(值传递vs指针传递vs引用传递)
练习3:交换函数(值传递 vs 指针传递 vs 引用传递)
演示视频 :https://www.bilibili.com/video/BV1sqfxBFEre
写三个版本,观察参数传递对原变量的影响。
#include <iostream>
// 值传递:无效,只交换副本
void swap_value(int x, int y) {
int temp = x;
x = y;
y = temp;
}
// 指针传递:通过地址修改原变量
void swap_pointer(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
// 引用传递:直接操作原变量(C++ 推荐)
void swap_reference(int &x, int &y) {
int temp = x;
x = y;
y = temp;
}
int main() {
int a = 5, b = 10;
swap_value(a, b);
std::cout << “值传递后: a=” << a << ” b=” << b << std::endl; // 5 10
swap_pointer(&a, &b);
std::cout << “指针传递后: a=” << a << ” b=” << b << std::endl; // 10 5
swap_reference(a, b);
std::cout << “引用传递后: a=” << a << ” b=” << b << std::endl; // 5 10
return 0;
}
