Menu
CoddyTech

引用传递

本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 41 课,共 56 课。

向函数传递参数时,C++ 通常会创建这些值的副本。这意味着函数内部的更改不会影响原始变量。引用传递可以改变这种行为,让函数直接操作原始变量。

要通过引用传递,请在函数声明中的参数类型后添加 & 符号:

void doubleValue(int& number) {
    number = number * 2;  // 修改原变量
}

调用此函数时,在函数内部对参数所做的任何更改都会直接修改传入的原始变量。这在你希望函数修改其参数,或处理大型对象且复制对象效率低下时特别有用。

引用传递避免了复制数据的开销,让程序运行得更快、更节省内存,尤其是在处理向量或映射等复杂数据结构时。

challenge icon

挑战

简单

创建一个函数,通过函数参数直接修改变量,以此演示引用传递。这个挑战将测试你对 & 符号的理解,看看它如何让函数操作原始变量,而不是副本。

将提供以下输入:

  • 一个整数 value1,表示第一个数字
  • 一个整数 value2,表示第二个数字
  • 一个整数 value3,表示第三个数字

你的程序应该:

  1. 创建一个名为 tripleValues 的函数,通过引用接收三个整数参数
  2. 在函数内部,将每个参数乘以 3
  3. 在 main 函数中,读取三个输入值并将它们存入变量
  4. 在调用函数前打印原始值
  5. 使用三个变量调用 tripleValues 函数
  6. 在函数调用后打印修改后的值,以显示它们已发生变化

请使用以下确切的输出格式:

函数调用前:

Original values: [value1] [value2] [value3]

函数调用后:

Tripled values: [new_value1] [new_value2] [new_value3]

函数签名应在每个参数类型后使用 & 符号来表示引用传递:void tripleValues(int& a, int& b, int& c)。这样,函数就可以直接修改传入的原始变量,从而展示值传递和引用传递之间的关键区别。函数调用后,main 中的变量会永久改变,这证明函数操作的是原始内存位置,而不是副本。

亲手试试

#include <iostream>
using namespace std;

// TODO:在这里创建 tripleValues 函数

int main() {
    // 读取输入值
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // 输出原始值
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO:在这里调用 tripleValues 函数
    
    // 输出修改后的值
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C++ 在线编译器