call by value / reference sehr wichtig !

PYCCAK

Grünschnabel
hey leute
habe ein großes Problem , schreibe morgen eine Arbeit und ich verstehe nicht ,
was der Unterschied zwischen call by value und call by reference ist .
ich finde keine erklärung , die wirklich für "OTTO" verständlich ist
wäre euch voll dankbar für eure hilfe .
 
Bei einem Call by Value übergibst du den Parameter als Wert.
Beispiel:
Code:
void TuWas( int a );
Das a, das die Funktion erhält, ist eine temporäre Kopie der Variablen aus der aufrufenden Funktion auf dem Stack. Der Wert der Variablen in der aufrufenden Funktion bleibt auf jeden Fall unverändert.

Bei einem Call by Reference wird nur ein Pointer oder eine Referenz auf den Parameter übergeben. Beispiel:
Code:
void TuWas( int& a );
Die Routine erhält hier nur einen "Zeiger" auf die originale Variable aus der aufrufenden Funktion. Durch eine Zuweisung wie
Code:
a = 4711;
wird der Wert der originalen Variable geändert. Es gibt also keine temporäre lokale Version des Wertes. Das ist effizient, wenn die Parameter zu einem Datentyp gehören, bei dem das Kopieren relativ teuer (in Bezug auf Performanz) ist.

Ich hoffe, das hilft dir ein wenig weiter.
 

Neue Beiträge

Zurück