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)
廣告