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.

Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...
AppyMouse On-Screen Trackpad und Mauszeiger für Windows Tablets
Tablet-Benutzer vermissen oft den Mauszeiger, insbesondere wenn sie die Laptops gewohnt sind. Die Touchscreen-Smartphones und -Tablets bieten viele Vo...
Mittlere Maustaste funktioniert nicht unter Windows 10
Das mittlere Maustaste hilft Ihnen beim Scrollen durch lange Webseiten und Bildschirme mit vielen Daten. Wenn das aufhört, werden Sie am Ende die Tast...