In C können wir Argumente auf zwei verschiedene Arten übergeben. Dies sind Call-by-Value und Call-by-Address, und in C++ können wir eine andere Technik bekommen. Dies wird als Call-by-Reference bezeichnet. Werfen wir einen Blick auf ihre Wirkung und ihre Wirkungsweise.
Zuerst sehen wir Call-by-Value. Bei dieser Technik werden Parameter in Funktionsparameter kopiert. Wenn also Änderungen vorgenommen werden, wird dadurch der kopierte Wert aktualisiert, nicht der tatsächliche Wert.
#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)
Call by Address funktioniert, indem die Adresse einer Variablen an eine Funktion übergeben wird. Wenn die Funktion daher den Wert aktualisiert, auf den diese Adresse zeigt, wird der tatsächliche Wert automatisch aktualisiert.
#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)
Gleiches wie Adressaufruf, hier verwenden wir einen Referenzaufruf. Dies ist eine C++-spezifische Funktion. Wir müssen die Referenzvariable des Parameters übergeben. Um ihn zu aktualisieren, wird der tatsächliche Wert aktualisiert. Lediglich bei der Funktionsdefinition müssen wir & vor den Variablennamen setzen.
#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)
Das obige ist der detaillierte Inhalt vonParameterübergabetechnologie in C/C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!