Isobel
Es gibt zwei Möglichkeiten, Argumente/Parameter an eine Funktion zu übergeben. Eine Methode ist Call by Value und die andere Methode ist Call by Reference.
Call by Value: Beim Call by Value sendet die Programmierung die Kopie eines Arguments/Parameters an eine Funktion. Der Programmierer übergibt die tatsächliche Variable nicht. Da nur die Kopie der Variablen an die Funktion übergeben wird, wirken sich Änderungen/Modifikationen innerhalb einer Funktion nicht auf die Variable aus und der Variablenwert bleibt nach dem Funktionsaufruf gleich.
Das folgende Beispiel wird es verdeutlichen;
Angenommen a = 2 vor dem Funktionsaufruf
Void-Funktion (int a)
{
a = a + a;
a = a – 5;
}
Da nur eine Kopie der Variablen "a" an die Funktion übergeben wird, bleibt der Wert von a auch nach dem Funktionsaufruf 2 erhalten.
Call by Reference: Beim Aufruf von Reference wird die Adresse des Arguments/Parameters an die Funktion übergeben. In einfachen Worten wird die eigentliche Variable oder ein Zeiger an die Funktion übergeben und der Variablenwert kann innerhalb einer Funktion geändert/modifiziert werden.
Zum Beispiel; Angenommen a = 2 vor Funktionsaufruf
Nachdem dieser Wert an eine Funktion wie
Void übergeben wurde function(int &a)
{
*a = *a + *a;
*a = *a – 5;
}
Der Wert von a wird "1", nachdem diese Funktion aufgerufen wurde.
Lonnie
Die an function übergebenen Argumente können von zwei Typen sein, nämlich
1. Übergebene Werte
2. Übergebene Adresse
Der erste Typ bezieht sich auf den Aufruf nach Wert und der zweite Typ bezieht sich auf den Aufruf nach Referenz.
Betrachten Sie zum Beispiel program1
main()
{
int x=50, y=70;
Austausch(x,y);
printf(“x=%dy=%d”,x,y);
}
Austausch(x1,y1)
int x1,y1;
{
int z1;
z1=x1;
x1=y1;
y1=z1;
printf(“x1=%d y1=%d”,x1,y1);
}
Hier wird der Wert zum Funktionsaustausch als Wert übergeben.
Betrachten Sie program2
main()
{
int x=50, y=70;
Austausch(&x,&y);
printf(“x=%dy=%d”,x,y);
}
Austausch(x1,y1)
int *x1,*y1;
{
int z1;
z1=*x1;
*x1=*y1;
*y1=z1;
printf(“*x=%d *y=%d”,x1,y1);
}
Hier wird die Funktion per Referenz aufgerufen. Mit anderen Worten, die Adresse wird mit dem Symbol & übergeben und auf den Wert wird mit dem Symbol * zugegriffen.
Der Hauptunterschied zwischen ihnen kann durch die Analyse der Ausgabe von Programm1 und Programm2 erkannt werden.
Die Ausgabe von program1, die nach Wert aufgerufen wird, ist
x1=70 y1=50
x=50 y=70
Aber die Ausgabe von program2, die durch Referenz aufgerufen wird, ist
*x=70 *y=50
x=70 y=50
Dies liegt daran, dass der Wert im Fall eines Aufrufs nach Wert an eine Funktion namens Interchange übergeben wird und dort wurde der Wert vertauscht und als
x1=70 y1=50 ausgegeben
und wieder da keine Werte zurückgegeben werden und daher die ursprünglichen Werte von x und y wie in der Hauptfunktion nämlich
x=50 y=70 gedruckt wurden.