在C++中,值传递和引用传递哪种更好?


在C++中,我们可以通过不同的方式将参数传递给函数。这些不同的方式包括:

  • 值传递
  • 引用传递
  • 地址传递

有时地址传递被称为引用传递,但在C++中它们是不同的。在地址传递中,我们使用指针变量来传递精确的内存地址,但在引用传递中,我们传递的是引用变量(该变量的别名)。C语言中没有这个特性,必须传递指针才能达到同样的效果。

在本节中,我们将了解引用传递相对于值传递的优势,以及在哪里使用它们。

值传递

在值传递中,作为参数传递的实际值在对其进行某些操作后不会改变。使用值传递时,它会在内存的栈段中创建该变量的副本。当值发生改变时,改变的是副本的值,实际值保持不变。

示例代码

 在线演示

#include<iostream>

using namespace std;

void my_function(int x) {
   x = 50;
   cout << "Value of x from my_function: " << x << endl;
}

main() {
   int x = 10;
   my_function(x);
   cout << "Value of x from main function: " << x;
}

输出

Value of x from my_function: 50
Value of x from main function: 10

引用传递

在引用传递中,作为参数传递的实际值在对其进行某些操作后会改变。使用引用传递时,它会在内存的栈段中创建该变量引用的副本。它使用引用来获取值。因此,当使用引用更改值时,它会更改实际变量的值。

示例代码

 在线演示

#include<iostream>
using namespace std;

void my_function(int &x) {
   x = 50;
   cout << "Value of x from my_function: " << x << endl;
}

main() {
   int x = 10;
   my_function(x);
   cout << "Value of x from main function: " << x;
}

输出

Value of x from my_function: 50
Value of x from main function: 50

在哪里使用引用传递?

  • 引用传递主要用于当我们想要更改传递给调用函数的参数的值时。

  • 一个函数只能返回一个值。当我们需要从一个函数返回多个值时,我们可以通过这种方式将它们作为输出参数传递。

更新于:2019年7月30日

444 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告