< 所有主题
打印

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;

}

目录