MST

星途 面试题库

面试题:C++ 函数参数传递之值传递与引用传递对比

在C++中,函数参数传递有值传递和引用传递两种方式。请阐述它们的区别,并通过代码示例展示在函数内部修改参数值,对函数外部实参的影响有何不同。
40.2万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

值传递和引用传递的区别

  1. 值传递:在值传递时,函数接收的是实参值的一个副本。对形参的任何修改都只在函数内部有效,不会影响到函数外部的实参。这是因为形参和实参在内存中是不同的存储位置,形参只是实参的一份拷贝。
  2. 引用传递:引用传递时,函数接收的是实参的引用,即实参的别名。对形参的修改等同于对实参的修改,因为它们指向相同的内存位置。

代码示例

#include <iostream>

// 值传递函数
void changeValueByValue(int num) {
    num = num * 2;
    std::cout << "在值传递函数内部,num的值为: " << num << std::endl;
}

// 引用传递函数
void changeValueByReference(int& num) {
    num = num * 2;
    std::cout << "在引用传递函数内部,num的值为: " << num << std::endl;
}

int main() {
    int value = 5;

    std::cout << "调用值传递函数前,value的值为: " << value << std::endl;
    changeValueByValue(value);
    std::cout << "调用值传递函数后,value的值为: " << value << std::endl;

    std::cout << "调用引用传递函数前,value的值为: " << value << std::endl;
    changeValueByReference(value);
    std::cout << "调用引用传递函数后,value的值为: " << value << std::endl;

    return 0;
}

在上述代码中:

  • changeValueByValue 函数采用值传递方式,函数内部对 num 的修改不会影响到函数外部的 value
  • changeValueByReference 函数采用引用传递方式,函数内部对 num 的修改会直接影响到函数外部的 value