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日

19K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告