在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 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告