Unterschied zwischen Anruf nach Wert und Anruf nach Referenz

Schlüsseldifferenz - Call by Value vs. Call by Reference
 

Viele Programmiersprachen verwenden Funktionen. Eine Funktion ist eine Menge von Anweisungen, um eine bestimmte Aufgabe auszuführen. Der Hauptcode kann in mehrere Funktionen unterteilt werden und diese aufrufen. Es gibt zwei Möglichkeiten, eine Funktion aufzurufen, z. B. Aufruf nach Wert und Aufruf nach Referenz. Bei der call by value-Methode werden Kopien von Variablen an die Funktion übergeben. Wenn sich der Wert der Funktion ändert, ändert sich der ursprüngliche Wert nicht. Bei Aufruf durch Referenz spiegeln die Änderungen der Variablen in der Funktion den ursprünglichen Wert wider. Das Hauptunterschied zwischen call by value und call by reference ist das, Beim Aufruf nach Wert wird die Kopie der Variablen an die Funktion übergeben, und beim Aufruf per Referenz werden die Adressen der Variablen an die Funktion übergeben.  Dieser Artikel beschreibt den Unterschied zwischen Aufruf nach Wert und Aufruf nach Referenz.

INHALT

1. Übersicht und Schlüsseldifferenz
2. Was ist Call by Value?
3. Was ist Call by Reference
4. Ähnlichkeiten zwischen Aufruf nach Wert und Aufruf nach Referenz
5. Side-by-Side-Vergleich - Call by Value und Call by Reference in tabellarischer Form
6. Zusammenfassung

Was ist Call by Value??

Beim Aufruf nach Wert werden Kopien von Variablen an die Funktion übergeben. Die Funktion kann den kopierten Wert ändern, der ursprüngliche Wert wird jedoch nicht geändert. Dieses Konzept kann leicht verstanden werden, indem das Programm mit zwei Nummern ausgetauscht wird. Siehe das unten stehende C-Programm, das in der Code Blocks-Umgebung geschrieben wurde.

Abbildung 01: Programm zum Tauschen von zwei Zahlen

Gemäß dem unten angegebenen Programm hat die Variable 'a' den Wert 20 und die Variable 'b' den Wert 30. Beim Aufruf der Funktion swap (a, b) werden diese beiden Werte an die Swap-Funktion übergeben. In der Swap-Funktion wird 'a' in 'x' und 'b' in 'y' kopiert. Jetzt hat 'x' den Wert 20 und 'y' hat den Wert 30. Mit der Temp-Variablen werden die beiden Werte vertauscht. Wenn Sie den Wert von 'x' und 'y' innerhalb dieser Swap-Funktion drucken, gibt die Ausgabe 30 für 'x' und 20 für 'y' aus. Wenn die Ausführung der Swap-Funktion abgeschlossen ist, kehrt die Steuerung zur Hauptfunktion zurück. Beim Drucken der Werte von 'a' und 'b' in der Hauptfunktion sind die Ergebnisse die ursprünglichen Werte. Sie sind 20 für 'a' und 30 für 'b'. Mit der Swap-Funktion vorgenommene Änderungen werden nicht im Hauptprogramm angezeigt.

Abbildung 02: Ausgabe des Swapping-Programms

'x' und 'y' innerhalb der Swap-Funktion haben die vertauschten Werte, die 30 und 20 sind, aber diese Werte können nicht im Hauptprogramm verwendet werden. Obwohl 'x' und 'y' Werte ausgetauscht haben, handelt es sich dabei um lokale Variablen, deren Funktion ausgetauscht werden muss, und die Hauptfunktion kann nicht darauf zugreifen. Um dieses Problem zu vermeiden, kann Call by reference verwendet werden.

Was ist Call by Reference?

Bei dieser Methode werden Adressen der Variablen an die Funktion gesendet. Siehe das unten stehende C-Programm, das in der Code Blocks-Umgebung geschrieben wurde.

Abbildung 03: Vertauschen von zwei Zahlen mit Zeigern

Gemäß dem folgenden Beispiel beträgt der Wert von 'a' 20 und der Wert von 'b' 30. Anstatt Kopien von 'a' und 'b' zu übergeben, kann der Programmierer die Adressen von 'a' und 'b' senden 'mit der Funktion tauschen (& a, & b).

Abbildung 04: Ausgabe des Swapping-Programms mit Zeigern

Im Swap sollte die Funktion Zeiger verwenden, da Adressen übergeben werden und diese Adressen von Zeigern gehalten werden sollen. Innerhalb der Funktion wird die Adresse von 'a' nach 'x' und die Adresse von 'b' nach 'y' kopiert. Mit der temporären Variablen werden die Werte 'x' und 'y' vertauscht. Bei diesem Aufruf der Referenzmethode spiegeln sich die Änderungen innerhalb der Swap-Funktion im Hauptprogramm wider. Wenn Sie die Werte 'a' und 'b' in der Hauptansicht drucken, werden die vertauschten Werte angezeigt. Jetzt ist 'a' 30 und 'b' 20. Wenn die Funktion die Adresse der Variablen übernimmt, wirken sich die Änderungen innerhalb der Funktion auf die ursprünglichen Werte aus.

Was ist die Ähnlichkeit zwischen Anruf nach Wert und Anruf nach Referenz?

  • Diese beiden Methoden werden zum Aufruf von Funktionen / Methoden verwendet.

Was ist der Unterschied zwischen Anruf nach Wert und Anruf nach Referenz?

Call By Value im Vergleich zu Call By Reference

Beim Aufruf nach Wert werden Kopien von Variablen an die Funktion übergeben, sodass Änderungen innerhalb der Funktion den ursprünglichen Wert nicht ändern. Beim Aufruf durch Referenz wird die Adresse der Variablen an die Funktion übergeben, sodass Änderungen an Variablen innerhalb der Funktion den ursprünglichen Wert ändern.
 Wertänderung
Beim Aufruf von value ändert sich der ursprüngliche Wert nicht. Bei Aufruf durch Referenz ändern sich die ursprünglichen Werte.

Zusammenfassung - Call by Value vs. Call by Reference

Aufruf nach Wert und Aufruf nach Referenz sind Methoden zum Aufrufen der Funktion. Der Unterschied zwischen Aufruf nach Wert und Aufruf nach Referenz besteht darin, dass beim Aufruf nach Wert die Kopien der Variablen an die Funktion übergeben werden und im Aufruf per Referenz die Adressen der Variablen an die Funktion übergeben werden. Die Verwendung von call by value oder call by reference hängt von der auszuführenden Aufgabe ab.

Laden Sie die PDF-Version von Call by Value vs. Call by Reference herunter

Sie können die PDF-Version dieses Artikels herunterladen und gemäß dem Zitiervermerk für Offline-Zwecke verwenden. Laden Sie die PDF-Version hier herunter. Unterschied zwischen Aufruf nach Wert und Aufruf nach Referenz

Referenz:

1.Jaiswal, Haresh. "11 Call by Value vs. Call by Reference." Youtube, YouTube, 24. Dezember 2015. Hier verfügbar