C++

C++ Call by Address und Call by Reference

C++ Call by Address und Call by Reference

C++ ist eine flexible Allzweck-Programmiersprache. Es wurde ursprünglich erstellt von Bjarne Stroustrup, ein dänischer Informatiker, damals 1985. C++ unterstützt Drei-Parameter-Übergabemethoden, d.h.e., Call-by-Value, Call-by-Adresse und Call-by-Referenz. In diesem Artikel werden wir über Call-by-Address- und Call-by-Reference-Mechanismen sprechen.

Was ist eine Funktion??

Bevor wir in das eigentliche Thema einsteigen, müssen wir verstehen, was die Funktion in C . ist++. Viele von euch kennen die Funktionen vielleicht schon.

Eine Funktion ist im Grunde ein Stück Code, das verwendet werden kann, um eine bestimmte Aufgabe auszuführen. Eine Funktion wird hauptsächlich verwendet, um den sich wiederholenden Code in einem C++-Programm zu reduzieren. Es nimmt Eingaben als Parameter an und gibt die Ausgabe als Rückgabewert zurück. Wenn wir die Funktion einmal definieren, können wir sie im späteren Teil unseres Programms mehrmals aufrufen/verwenden. Auf diese Weise sparen wir viel repetitiven Code im Programm.

Jedes C++-Programm soll die Funktion „main()“ haben. Die Funktion „main()“ ist der Einstiegspunkt für ein C++-Programm. Abgesehen von der Funktion „main()“ kann der Programmierer beliebig viele Funktionen definieren.

Hier ist die Syntax zum Definieren einer Funktion:

Return_type Function_Name (Eingabeparameterliste)

Die Funktion in C++ kann 0 oder mehr Eingabeparameter akzeptieren, während sie nur einen Rückgabewert zurückgeben kann.

Was ist Adresse?

Es gibt zwei Arten von Variablen in C++ (ähnlich der Sprache C) – Datenvariable und Adressvariable. Die Adressvariable wird verwendet, um die Adresse einer anderen Datenvariablen zu speichern. Betrachten wir zum Beispiel das folgende Code-Snippet:

int i = 100;
int *ptr = &i;

Hier sagt uns die erste Anweisung, dass die Variable „i“ eine Datenvariable ist und den Wert 100 . speichert. In der zweiten Anweisung deklarieren wir eine Zeigervariable, d.h.e. „ptr“ und initialisieren mit der Adresse der Variablen „i“.

Was ist Referenz??

Die Referenz ist eine weitere leistungsstarke Funktion der Sprache C++. Betrachten wir das folgende Code-Snippet:

int a = 200;
int &r = a;

In diesem Beispiel haben wir eine ganze Zahl deklariert, i.e. „a“ und dann eine Referenzvariable „r“ deklariert, die mit dem Wert von „a“ initialisiert wird. Die Referenzvariable ist also nichts anderes als ein Alias ​​einer anderen Variablen.

Methoden zur Parameterübergabe:

In der Sprache C++ gibt es drei Arten von Methoden zur Parameterübergabe:

  1. Anruf nach Wert / Wertübergabe
  2. Nach Adresse anrufen / Nach Adresse weitergeben
  3. Call by Reference / Pass by Reference

In diesem Artikel diskutieren wir über die - Call by address und Call by reference.

Was ist Call By Address / Pass by Address?

Bei der Methode Call by address / Pass by address werden die Funktionsargumente als Adresse übergeben. Die Caller-Funktion übergibt die Adresse der Parameter. Zeigervariablen werden in der Funktionsdefinition verwendet. Mit Hilfe der Methode Call by address kann die Funktion auf die Aktualparameter zugreifen und diese ändern. Wir werden später in diesem Artikel ein Beispiel für die Methode "Aufruf nach Adresse" sehen.

Was ist Call by Reference / Pass by Reference??

In der Methode Call by reference / Pass by reference werden die Funktionsparameter als Referenz übergeben. Innerhalb der Funktionsdefinition erfolgt der Zugriff auf die Aktualparameter über die Referenzvariable.

Beispiele:

Da wir nun das Konzept der Parameterübergabemethoden verstehen, werden wir mehrere Beispielprogramme sehen, um den Parameterübergabemechanismus in C++ zu verstehen:

  1. Beispiel-1 – Anruf nach Adresse (1)
  2. Beispiel-2 – Anruf über Adresse (2)
  3. Beispiel-3 – Aufruf nach Referenz (1)
  4. Beispiel-4 - Aufruf nach Referenz (2)

Die ersten beiden Beispiele werden gegeben, um zu erklären, wie die Methode Call by address in C funktioniert++. Die letzten beiden Beispiele dienen der Erläuterung des Call-by-Reference-Konzepts.

Beispiel-1 – Anruf nach Adresse (1)

In diesem Beispiel demonstrieren wir den Call-by-Address-Mechanismus. Von der Funktion „main()“ rufen wir die Funktion „hello()“ auf und übergeben die Adresse von „var“. In der Funktionsdefinition erhalten wir die Adresse von „var“ in einer Zeigervariablen, d.h.e., "p". Innerhalb der Funktion hello wird der Wert von „var“ mit Hilfe des Zeigers auf 200 geändert. Daher wird der Wert von „var“ in der Funktion „main()“ nach dem Aufruf der Funktion „hello()“ auf 200 geändert.

#einschließen
Verwenden von Namespace-Std;
void hallo(int *p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
*p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;

int main()

intvar = 100;
cout << "Value of var inside main() function = " << var << endl;
hallo(&var);
cout << endl << "Value of var inside main() function = " << var << endl;
0 zurückgeben;

Beispiel-2 - Anruf über Adresse (2)

Dies ist ein weiteres Beispiel für den Aufruf nach der Adressmethode. In diesem Beispiel erklären wir, wie die Call-by-Address-Methode verwendet werden kann, um ein reales Problem zu lösen. Zum Beispiel wollen wir eine Funktion schreiben, um zwei Variablen zu tauschen. Wenn wir den Call-by-Value-Mechanismus verwenden, um zwei Variablen zu tauschen, werden die tatsächlichen Variablen in der Aufruffunktion nicht getauscht. Die Call-by-Address-Methode kann in einem solchen Szenario verwendet werden. In diesem Beispiel übergeben wir die Adresse von var_1 (&var_1) und var_2 (&var_2) an die Funktion „mySwap()“. Innerhalb der Funktion „mySwap()“ tauschen wir die Werte dieser beiden Variablen mit Hilfe der Zeiger aus. Wie Sie in der folgenden Ausgabe sehen können, wird der tatsächliche Wert dieser Variablen in der Funktion „main()“ getauscht, nachdem die Funktion „mySwap()“ ausgeführt wurde.

#einschließen
Verwenden von Namespace-Std;
void mySwap(int *vptr_1, int *vptr_2)

int temp_var;
temp_var = *vptr_1;
*vptr_1 = *vptr_2;
*vptr_2 = temp_var;

int main()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by address." << endl << endl;
meinSwap(&var_1, &var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
0 zurückgeben;

Beispiel-3 – Aufruf nach Referenz (1)

In diesem Beispiel zeigen wir, wie Call by Reference in C . funktioniert++. In der Funktionsdefinition „hello()“ wird der Wert als Referenzvariable empfangen (&p). Mit Hilfe der Bezugsgröße (i.e., p), können wir den Wert des aktuellen Parameters (var) innerhalb der Funktion „main()“ ändern.

#einschließen
Verwenden von Namespace-Std;
void hallo(int &p)

cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;

int main()

intvar = 100;
cout << "Value of var inside main() function = " << var << endl;
hallo(var);
cout << endl << "Value of var inside main() function = " << var << endl;
0 zurückgeben;

Beispiel-4 - Aufruf nach Referenz(2)

Dies ist ein weiteres Beispiel für einen Call by Reference. In diesem Beispiel demonstrieren wir anhand eines realen Beispiels, wie Call-by-Reference in C++ funktioniert. Die Funktion „mySwap()“ wird von der Funktion „main()“ mit den folgenden Parametern aufgerufen - var_1 und var_2. Innerhalb der Funktion „mySwap()“ erhalten wir die Parameter als Referenzvariablen.

#einschließen
Verwenden von Namespace-Std;
void mySwap(int &vref_1, int &vref_2)

int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;

int main()

int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl << endl;
cout << "Calling mySwap() function - Call by reference." << endl << endl;
meinSwap(var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
0 zurückgeben;

Fazit

Verstehen der Parameterübergabemethoden in C++ ist sehr entscheidend. Die Programmiersprache C unterstützt nur Call by value und Call by address. C++ unterstützt jedoch Call by Reference zusammen mit den beiden vorherigen Mechanismen. In diesem Artikel haben wir mehrere Arbeitsbeispiele gesehen, um das Konzept von Call by Address und Call by Reference zu verstehen. Call by Address ist eine sehr leistungsfähige und beliebte Methode in eingebetteten Domänenanwendungen.

Beste Spielkonsolen-Emulatoren für Linux
Dieser Artikel listet beliebte Spielekonsolen-Emulationssoftware auf, die für Linux verfügbar ist. Emulation ist eine Softwarekompatibilitätsschicht, ...
Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...