Call by Reference vs. Call by Value: Unterschied und Vergleich

Funktionen können in einem Programm auf zwei Arten aufgerufen werden. Eine Methode ist per Call-by-Reference und die nächste Methode ist per Call-by-Value. Diese Methoden können basierend auf der Art der Werte, die an die Parameter übergeben werden, unterschieden werden.

Die darin verwendeten Parameter werden Aktualparameter genannt. Sie werden in vielen Programmiersprachen wie C, C++ und Java verwendet.

Key Take Away

  1. Call by Reference übergibt die Speicheradresse einer Variablen an eine Funktion, während Call by Value eine Kopie des Variablenwerts sendet.
  2. Beim Aufruf per Referenz wirken sich Änderungen innerhalb einer Funktion direkt auf die ursprüngliche Variable aus, während der Aufruf per Wert die ursprüngliche Variable unverändert lässt.
  3. Call-by-Reference ist speichereffizienter als Call-by-Value, kann aber zu unbeabsichtigten Nebeneffekten führen, wenn es nicht sorgfältig verwaltet wird.

Call-by-Reference vs. Call-by-Value

Weißer Essig, der zum Reinigen oder Kochen verwendet wird, wird durch Fermentieren von destilliertem Alkohol hergestellt, wodurch eine klare, scharf schmeckende Flüssigkeit entsteht. Apfelessig wird durch Fermentieren des Zuckers von Äpfeln hergestellt und hat einen milderen, leicht süßlichen Geschmack, der in Salatdressings und Marinaden verwendet wird.

Call-by-Reference vs. Call-by-Value

Die Call-by-Reference-Methode wird für den Zugriff auf das eigentliche Argument verwendet, das der Funktionsaufruf ist. Das bedeutet, dass Änderungen am Parameter erst nach Übergabe des Arguments vorgenommen werden.

Es verwendet die gleiche Speicherzuordnung, die in tatsächlichen Parametern verwendet wird. Wenn es eine Funktion aufruft, wird die Adresse selbst beim Aufruf von Referenzen verwendet, anstatt die Variablen zu kopieren.

Call by Value ist eine Unterroutine, die die tatsächlichen Daten der Parameter übergibt, die in der Unterroutine verwendet werden.

Wenn Sie in dieser Methode eine Funktion aufrufen, übergeben Sie den Wert an die Variable der Argumente in der aufgerufenen Funktion, sodass die aufgerufene Funktion mit dem Wert arbeitet. Diese Änderung spiegelt sich nicht in der aufgerufenen Funktion wider.

Vergleichstabelle

VergleichsparameterAnruf nach ReferenzAnruf nach Wert
VariableVariable wird übergeben.Kopie der Variablen wird übergeben.
Variabler WertVorgenommene Änderungen wirken sich auf die Funktion außen aus.Vorgenommene Änderungen haben keinen Einfluss auf die Funktion außen.
OriginalwertEs wird modifiziert.Es wird nicht modifiziert.
SicherheitTatsächliche Argumente sind nicht sicher.Tatsächliche Argumente sind sicher.
DefinitionEs verwendet selbst eine Variable zum Übergeben.Es verwendet die Kopie der Variablen zum Übergeben.

Was ist Call-by-Reference?

Es ist eine Methode, die zum Übergeben von Argumenten an eine Funktion verwendet wird. Um die Adresse der Variablen zu speichern, werden Pointer-Variablen verwendet. Bei dieser Methode sind tatsächliche Argumente nicht sicher.

Lesen Sie auch:  SDK vs. JDK: Unterschied und Vergleich

Versehentliche Änderungen sind möglich. Es ist wichtig, die Argumentoperationen sorgfältig zu handhaben. Es hilft, versehentliche Änderungen zu vermeiden.

Da es nur einen Wert enthält, werden keine doppelten Daten erstellt Speichern Speicherplatz. Wenn eine Person den Code liest, kann sie nicht feststellen, ob die Werte in diesem Code geändert wurden oder nicht.

Bei dieser Methode ist eine lebenslange Garantie ein großes Thema. Es wird gefährlich, wenn Sie mit Multithread-Programmen und Lambdas arbeiten. Um Call by Reference zu deklarieren, sollten Sie eine Adresse übergeben.

Call by Reference, wenn es um die C-Programmierung geht. Es greift direkt auf die Datenelemente zu und führt die Funktionen an ihnen aus. Aber Sie müssen vorsichtig sein, da Zeiger daran beteiligt sind.

Wenn Sie den jeweiligen Status des Datenelements kennen, dann rufen Sie die Referenzmethode ID Perfect auf. Das Ändern einer Kopie der Daten wird nichts Sinnvolles bewirken

Call-by-Reference birgt Gefahren, die Call-by-Value nicht hat. Sie können einem Zeiger versehentlich einen Wert neu zuweisen und ihn im Speicher verlieren.

Was ist Call-by-Value?

Bei dieser Methode wirken sich Änderungen innerhalb der Funktion des Parameters nicht auf das Argument aus. Das Swap-Programm ist das beste Beispiel für ein Call-by-Value-Programm.

Es erklärt, dass keine Änderungen am Wert vorgenommen werden, auch wenn diese innerhalb der Funktion geändert werden. In JavaDie Call-by-Value-Methode bedeutet, dass die Methode mit ihrem Parameter als Wert aufgerufen wird.

Bei diesem Verfahren werden die Parameter an unterschiedlichen Speicherorten abgelegt. Wenn Sie innerhalb des Standorts Änderungen vornehmen, werden die tatsächlichen Parameter des Anrufers nicht beeinflusst.

Diese Methode ist am besten, da der ursprüngliche Wert nicht geändert wird. Sie können jedoch keine Änderungen an den eigentlichen Variablen vornehmen. Tatsächliche Argumente sind bei dieser Methode sicher, da Sie keine versehentlichen Änderungen vornehmen können. 

Lesen Sie auch:  iPhoto Album vs. Event: Unterschied und Vergleich

Diese Methode konserviert die Daten, da sie die ursprüngliche Variable nicht ändern. Hier sind Argumente Variablen. Das Ändern einer Variablen in einem Funktionsrumpf ist nicht direkt. Komplexe Ausdrücke können manchmal als Argumente funktionieren.

Es ist nicht speichereffizient, da zwei Kopien für dieselbe Variable erstellt werden. Wenn die Datengröße groß ist, wird die Call-by-Value-Methode sie nicht ansprechen. In diesem Fall sollten sich Programmierer für die Call-by-Reference-Methode entscheiden. 

Hauptunterschiede zwischen Call by Reference und Call by Value

  1. Der ursprüngliche Wert wird im Call by Reference modifiziert. Andererseits wird beim Call by Value der ursprüngliche Wert nicht verändert.
  2. Call by Reference wird von Programmiersprachen unterstützt, ist aber nicht standardmäßig. Auf der anderen Seite funktioniert Call by Value standardmäßig in Programmiersprachen.
  3. Bei Call by Reference wirken sich alle an der Variablen vorgenommenen Änderungen auch auf die Variable außerhalb der Funktion aus. Andererseits wirken sich beim Aufruf nach Wert alle Änderungen, die an der Variablen vorgenommen werden, nicht auf die Variable außerhalb der Funktion aus.
  4. Mit Call by Reference können Sie Änderungen am Variablenwert vornehmen. Auf der anderen Seite können Sie mit Call-by-Value keine Änderungen vornehmen.
  5. Beim Call by Reference wird eine Adresse des Wertes übergeben. Beim Aufruf per Referenz wird jedoch eine Kopie des Werts übergeben. 
Bibliographie
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Letzte Aktualisierung: 22. Juli 2023

Punkt 1
Eine Bitte?

Ich habe mir so viel Mühe gegeben, diesen Blogbeitrag zu schreiben, um Ihnen einen Mehrwert zu bieten. Es wird sehr hilfreich für mich sein, wenn Sie es in den sozialen Medien oder mit Ihren Freunden / Ihrer Familie teilen möchten. TEILEN IST ♥️

Hinterlasse einen Kommentar

Möchten Sie diesen Artikel für später speichern? Klicken Sie auf das Herz in der unteren rechten Ecke, um in Ihrer eigenen Artikelbox zu speichern!