Was ist der Unterschied zwischen Call by Address und Call by Reference?

Inhaltsverzeichnis:

Anonim

Die Hauptunterschied zwischen Call-by-Adresse und Call-by-Referenz ist das beim Aufruf per Adresse wird die Adresse eines Arguments in den Formalparameter der Funktion kopiert, während beim Aufruf per Referenz die Referenz eines Arguments in den Formalparameter der Funktion kopiert wird.

Im Allgemeinen ist eine Funktion ein Satz von Anweisungen, der es ermöglicht, eine Aufgabe mehrmals auszuführen. Eine Funktion hilft, das Programm lesbarer zu machen. In Programmiersprachen wie C++ beginnt die Ausführung mit der main-Methode, und es ist möglich, die anderen Funktionen oder Methoden aus der main-Methode aufzurufen. Diese Sprachen haben verschiedene Methoden, um eine Funktion aufzurufen. Zwei solcher Methoden in C++ sind „Call by Address“ und „Call by Reference“.

C++, Aufruf über Adresse, Aufruf über Zeiger, Aufruf über Referenz, Funktion, Zeiger, Referenz

Was ist Call by Address

Call-by-Adresse wird auch als Call-by-Pointer bezeichnet. Bei dieser Methode übergibt der Programmierer die Adressen der eigentlichen Argumente an die Formalparameter. Dann verwendet die Funktion die Adressen, um auf die tatsächlichen Argumente zuzugreifen. Mit anderen Worten, die Änderungen an den Formalparametern wirken sich auf die tatsächlichen Argumente aus. Um den Wert zeigerweise zu übergeben, werden die Argumentzeiger ähnlich wie bei jedem anderen Wert an die Funktionen übergeben. Ein Beispielprogramm ist wie folgt.

Abbildung 1: C++-Programm mit Aufruf über Adresse

Im Hauptprogramm gibt es zwei ganze Zahlen: a’ und ‘b’. Die Adressen von ‚a‘und ‚b‘werden an die Funktion übergeben. Die Funktion erhält diese Adressen. Und die temp-Variable hilft, die beiden Werte zu vertauschen. Dann bearbeitet die Funktion die Istwerte unter Verwendung der Adressen. Daher können wir beobachten, dass die innerhalb der Funktion vorgenommenen Änderungen im Hauptprogramm sichtbar sind. Schließlich können wir sehen, dass die beiden Werte vertauscht sind. Jetzt hat 'a' 20 und 'b' hat 10.

Was ist Call-by-Reference?

Bevor Sie das Konzept des Aufrufs durch Referenz verstehen, ist es wichtig, das Konzept der Referenzvariablen zu verstehen. Nehmen Sie den folgenden Code an.

int a = 10;

int &b= a;

Dabei ist b eine Referenzvariable. Diese Variablen belegen keinen eigenen Speicherplatz. Daher teilt es sich den Speicher der bereits zugewiesenen Variablen. Mit anderen Worten, b teilt den Speicher von a. Wenn der Programmierer die Ist-Variable ändert, ändert sich auch die Referenz-Variable. Wenn der Programmierer a ändert, spiegelt sich dies in b wider, und wenn er b ändert, verwendet a diesen neuen Wert von b. Ebenso helfen Referenzvariablen, Speicher zu sparen.

Beim Aufruf per Referenz werden die Referenzen der Argumente auf die Formalparameter kopiert. Innerhalb der Funktion kann der Programmierer die Referenzen verwenden, um auf die eigentlichen Argumente zuzugreifen. Daher wirken sich die am Parameter vorgenommenen Änderungen auf das eigentliche Argument aus. Um den Wert als Referenz zu übergeben, wird außerdem die Argumentreferenz wie jeder andere Wert an die Funktionen übergeben.

Abbildung 2: C++-Programm mit Call by Reference

Im Hauptprogramm gibt es im Hauptprogramm zwei ganze Zahlen: ‚a‘und ‚b‘. Diese beiden Werte werden an die Swap-Funktion übergeben. In der Swap-Funktion sind p und q Formalparameter. &p und &q zeigen an, dass es sich um Referenzvariablen handelt. Dann nimmt die Swap-Funktion Änderungen an den Werten vor. Schließlich werden die vertauschten Werte auf der Konsole angezeigt.

Unterschied zwischen Call by Address und Call by Reference

Definition

Call By Address ist eine Möglichkeit, eine Funktion aufzurufen, bei der die Adresse der eigentlichen Argumente in die Formalparameter kopiert wird. Call-by-Reference ist jedoch eine Methode zum Übergeben von Argumenten an eine Funktion, indem die Referenz eines Arguments in den formalen Parameter kopiert wird. Dies ist also der Unterschied zwischen Call By Address und Call By Reference.

Funktionalität

Speicherzuweisung

Außerdem wird beim Aufruf nach Adresse der Speicher sowohl für tatsächliche Argumente als auch für formale Parameter zugewiesen, während beim Aufruf durch Verweis der Speicher nur für tatsächliche Argumente zugewiesen wird und sich formale Parameter diesen Speicher teilen.

Abschluss

Kurz gesagt, Call By Address und Call By Reference sind zwei Methoden zum Übergeben von Werten an eine Funktion. Der Hauptunterschied zwischen Call By Address und Call By Reference besteht darin, dass beim Call by Address die Adresse eines Arguments in den Formalparameter der Funktion kopiert wird, während beim Call by Reference die Referenz eines Arguments in den Formalparameter kopiert wird der Funktion.

Verweise:

1.Gupta, Sanjay. 07 C Call by Value, Call by Address und Call by Reference Methods of Function Call, YouTube, 3. Januar 2017, hier verfügbar. 2.Tutorialspoint.com. „C-Funktionsaufruf durch Zeiger.“ www.tutorialspoint.com, hier verfügbar. 3.Tutorialspoint.com. „C-Funktionsaufruf nach Referenz.“ www.tutorialspoint.com, hier verfügbar.

Was ist der Unterschied zwischen Call by Address und Call by Reference?