logo

C++-Funktionen – Übergabe als Referenz

Es gibt mehrere Möglichkeiten, Daten (oder Variablen) als Argument an eine Funktion zu senden. Zwei der gebräuchlichsten sind die Wertübergabe und die Referenzübergabe. Durch die Referenzübergabe kann eine Funktion eine Variable ändern, ohne eine Kopie zu erstellen. Wir müssen Referenzvariablen deklarieren. Der Speicherort der übergebenen Variablen und Parameter ist derselbe. Daher spiegelt sich jede Änderung des Parameters auch in der Variablen innerhalb der übergeordneten Funktion wider. Dieser Artikel konzentriert sich auf die Diskussion, wie Variablen in C++ als Referenz übergeben werden.

Was ist ein Pass-by-Reference?

Wenn eine Variable als Referenz an eine Funktion übergeben wird, wird die Adresse der Variablen in einer Zeigervariablen innerhalb der Funktion gespeichert. Daher ist die Variable innerhalb der Funktion ein Alias ​​für die übergebene Variable. Daher werden alle Operationen, die an der Variablen innerhalb der Funktion ausgeführt werden, auch in der aufrufenden Funktion widergespiegelt.



  • Diese Fähigkeit, Änderungen widerzuspiegeln, könnte von einer Funktion mehr als einen Wert zurückgeben.
  • Außerdem könnte eine void-Funktion mit dieser Methode technisch gesehen einen oder mehrere Werte zurückgeben.

Der & Der (Adresse von)-Operator bezeichnet Werte, die per Referenzübergabe in einer Funktion übergeben werden. Nachfolgend finden Sie das C++-Programm zur Implementierung von Pass-by-Reference:

C++

Java Catch versuchen








// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }>

>

>

Ausgabe

5 4>

Erläuterung:

  • Zunächst wird eine Funktion mit dem Rückgabedatentyp void definiert und nimmt den Wert per Referenz an (wie durch angegeben). & Adresszeichen in den Formalparametern).
  • Die Funktion dekrementiert den Wert ihres formalen Parameters um 1.
  • Danach wird innerhalb der Hauptfunktion eine ganzzahlige Variable mit dem Namen A wird mit dem Wert 5 initialisiert.
  • Der Wert von „a“ wird auf der Konsole gedruckt. Die Funktion f() wird aufgerufen und die Variable als Argument übergeben.
  • Innerhalb der Funktion wird der Wert der Variablen um 1 dekrementiert.
  • Bei der Rückkehr aus der Funktion wird erneut der Wert der Variablen angezeigt, der sich als um 1 kleiner als der ursprüngliche Wert herausstellte.

Daher werden die Änderungen an einer Variablen, die als Referenz an eine Funktion übergeben wird, in der aufrufenden Funktion widergespiegelt.

Swap-Funktion mit Pass-By-Reference

Die Swap-Funktion vertauscht die Werte der beiden Variablen, die sie als Argumente erhält. Unten finden Sie das C++-Programm zum Austauschen der Werte zweier Variablen mithilfe der Referenzübergabe.

C++


Scanner scannen Java



// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y '>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping x = %d y = %d '>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping x = %d y = %d '>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }>

upcasting
>

>

Ausgabe:

C++ – Swap-Funktion mit Pass-By-Reference

Erläuterung:

  • Zunächst wird der Funktionsprototyp definiert (optional, wenn die Funktion vor der Hauptfunktion definiert wird).
  • Innerhalb der Hauptfunktion werden die Werte der beiden Variablen vom Benutzer als Eingabe übernommen.
  • Die Werte vor dem Aufruf der Swap-Funktion werden auf der Konsole ausgegeben.
  • Anschließend werden die Werte als Argument an die Swap-Funktion übergeben.
  • Die Swap-Funktion nutzt Call-by-Reference und enthält den Code zum Austauschen der beiden Variablen.
  • Nach Abschluss der Funktion wird der Wert der beiden Variablen in der Hauptfunktion (nach dem Aufruf von swap) angezeigt.
  • Die vertauschten Werte werden auf dem Bildschirm angezeigt.

Referenzübergabe mit Zeigern

Es ist auch möglich, die Variablenadresse von der aufrufenden Funktion zu übergeben und sie als Zeiger innerhalb der aufgerufenen Funktion zu verwenden. Dies ermöglicht eine etwas explizitere Änderung der Variablenwerte in der Funktion.

Nachfolgend finden Sie das C++-Programm zur Implementierung der Referenzübergabe mit Zeigern:

C++




// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }>

>

Round-Robin-Planungsalgorithmus
>

Ausgabe

5 4>

Erläuterung:

  • Zunächst wird eine Funktion mit dem Rückgabedatentyp void definiert und nimmt Werte als Zeiger entgegen (wie durch das * gekennzeichnet) Sternchen (Anmelden der Formalparameter).
  • Die Funktion dekrementiert den Wert ihres formalen Parameters um 1.
  • Anschließend wird innerhalb der Hauptfunktion eine Ganzzahlvariable namens „a“ mit dem Wert 5 initialisiert.
  • Dann wird dieser Wert angezeigt. Die Funktion wird aufgerufen und die Adresse der Variablen als Argument übergeben.
  • Innerhalb der Funktion wird der Wert der Zeigervariablen um 1 dekrementiert.
  • Bei der Rückkehr aus der Funktion wird erneut der Wert der Variablen angezeigt, der sich als um 1 kleiner als der ursprüngliche Wert herausstellte.