C/C++ 中的引數傳遞技術


在 C 中,我們可以透過兩種不同的方式傳遞引數。這些是按值呼叫和按地址呼叫。在 C++ 中,我們可以獲得另一種技術。這稱為按引用呼叫。讓我們看看它們的效果以及它們如何工作。

首先,我們將看到按值呼叫。在這種技術中,引數被複制到函式引數。因此,如果進行了一些修改,它將更新複製的值,而不是實際值。

示例

#include <iostream>
using namespace std;
void my_swap(int x, int y) {
   int temp;
   temp = x;
   x = y;
   y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(a, b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

輸出

(a,b) = (10, 40)
(a,b) = (10, 40)

按地址呼叫透過將變數的地址傳遞到函式中來工作。因此,當函式更新由該地址指向的值時,實際值將自動更新。

示例

#include <iostream>
using namespace std;
void my_swap(int *x, int *y) {
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(&a, &b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

輸出

(a,b) = (10, 40)
(a,b) = (40, 10)

類似於按地址呼叫,在這裡我們使用按引用呼叫。這是 C++ 專有功能。我們必須傳遞引數的引用變數,以便在更新它時更新實際值。只有在函式定義中,我們才必須在變數名稱前放置 &。

示例

#include <iostream>
using namespace std;
void my_swap(int &x, int &y) {
   int temp;
   temp = x;
   x = y;
   y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(a, b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

輸出

(a,b) = (10, 40)
(a,b) = (40, 10)

更新於: 2019-07-30

6K+ 瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告