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

Inhaltsverzeichnis:

Anonim

Die Hauptunterschied zwischen Call-by-Value und Call-by-Adresse ist, dass beim Aufruf per Wert werden die Werte der Aktualparameter in die Formalparameter der Funktion kopiert, beim Aufruf per Adresse werden die Adressen der Aktualparameter in den Formalparameter der Funktion kopiert.

Eine Funktion ist eine Menge von Anweisungen, die eine bestimmte Aufgabe mehrmals ausführt. Anstatt alle Programmanweisungen in die main-Methode zu schreiben, können wir das Programm in mehrere Funktionen aufteilen und diese bei Bedarf aufrufen. Dies macht das Programm auch wiederverwendbar und einfacher zu lesen. Es gibt zwei Arten von Argumenten, die sich auf Funktionen beziehen: tatsächliche und formale Parameter. Aktualparameter sind die Werte, die beim Aufruf an die Funktion übergeben werden, während Formalparameter die Variablen innerhalb der Funktionen sind, die beim Aufruf der Funktion Werte empfangen. Zwei Methoden zum Aufrufen einer Funktion in Programmiersprachen wie ‚C‘sind Aufruf nach Wert und Aufruf nach Adresse.

Aufruf nach Wert, Aufruf nach Adresse, Funktionen

Was ist Call-by-Value?

Eine Funktion führt die definierte Aufgabe aus und gibt die Antwort zurück. Wenn der Rückgabetyp void ist, führt er die Aufgabe aus und gibt keinen Wert zurück. Beim Call-by-Value werden die eigentlichen Argumente in die Formalparameter der Funktion kopiert. Die Funktion verwendet die Werte in den Formalparametern, nicht die Aktualparameter. Daher ändern sich die ursprünglichen Werte nicht. Ein Beispiel ist wie folgt.

Abbildung 1: Programm mit Aufruf nach Wert

Im obigen Beispiel gibt es in der Hauptmethode zwei ganzzahlige Werte als „a“ und „b“. Die Swap-Funktion erhält diese beiden Werte. Innerhalb der Funktion wird der „a“-Wert nach x und der b-Wert nach y kopiert. Somit ist x 10 und y 20. Innerhalb der Funktion hilft die Variable temp, diese beiden Werte auszutauschen. Jetzt ist x 20 und y ist 10. Nach der Ausführung der Funktion geht die Steuerung zurück zur Hauptfunktion. Beim Drucken von „a“ und „b“ werden die Originalwerte gedruckt, d. h. 10 für „a“ und 20 für „b“. Dies ist also Call-by-Value. Dabei ändert sich der Istwert nicht. Die Änderung spiegelt sich jedoch nur innerhalb der Funktion wider.

Was ist Call by Address

Ein anderer Name für Call-by-Adresse ist Anruf durch Zeiger. Call by address-Methode kopiert die Adressen der Argumente in formale Parameter. Über die Adressen greift die Funktion auf die Istwerte zu. Daher spiegeln sich die innerhalb der Funktion vorgenommenen Änderungen in den ursprünglichen Werten wider. Ein Beispiel ist wie folgt.

Abbildung 2: Programm mit Aufruf über Adresse

Im obigen Beispiel gibt es im Hauptprogramm zwei ganze Zahlen als ‚a‘und ‚b‘. Die Adressen von 'a' und 'b' werden an Funktion übergeben. Die Funktion erhält diese Adressen. Die Variable temp hilft, die beiden Werte zu vertauschen. Da die Funktion über die Adressen mit den Istwerten arbeitet, sind die Änderungen innerhalb der Funktion im Hauptprogramm sichtbar. Obwohl die tatsächlichen „a“- und „b“-Werte 10 und 20 betragen, beträgt der „a“-Wert jetzt 20 und der „b“-Wert 10.

Unterschied zwischen Call by Value und Call by Address

Definition

Call by value ist eine Möglichkeit, Argumente an eine Funktion zu übergeben, indem die tatsächlichen Werte von Argumenten in formale Parameter der Funktion kopiert werden, während Call by Pointer eine Möglichkeit ist, Argumente an eine Funktion zu übergeben, indem die Adressen der Argumente in die formalen Parameter von. kopiert werden die Funktion.

Funktionalität

Beim Aufruf nach Wert werden die Werte der Aktualparameter in die Formalparameter der Funktion kopiert. Beim Aufruf per Adresse werden jedoch die Adressen der Aktualparameter in den Formalparameter der Funktion kopiert. Somit ist die Funktionalität der Hauptunterschied zwischen Call-by-Value und Call-by-Adresse.

Auswirkung auf ursprüngliche Werte

Ein weiterer wichtiger Unterschied zwischen Call-by-Value und Call-by-Adresse ist ihre Auswirkung auf die ursprünglichen Werte. Aufruf nach Wert wirkt sich nicht auf die ursprünglichen Werte aus, während Aufruf nach Adresse die ursprünglichen Werte beeinflusst.

Abschluss

Der Hauptunterschied zwischen Call-by-Value und Call-by-Address besteht darin, dass beim Call-by-Value die Werte der Aktualparameter in die Formalparameter der Funktion kopiert werden, während beim Aufruf per Adresse die Adressen der Aktualparameter in den Formalparameter kopiert werden der Funktion. Kurz gesagt, Aufruf nach Wert ändert den ursprünglichen Wert nicht, während Aufruf nach Adresse die ursprünglichen Werte ändert.

Referenz:

1. „C-Funktionen“. Www.tutorialspoint.com, Tutorials Point, hier verfügbar.

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