# call by value / reference sehr wichtig !



## PYCCAK (26. April 2004)

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 .


----------



## Kachelator (26. April 2004)

Bei einem Call by Value übergibst du den Parameter als Wert.
Beispiel: 
	
	
	



```
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: 
	
	
	



```
void TuWas( int& a );
```
 Die Routine erhält hier nur einen "Zeiger" auf die originale Variable aus der aufrufenden Funktion. Durch eine Zuweisung wie 

```
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.


----------



## PYCCAK (29. April 2004)

Danke dir vielmals lieber User des Forums


----------

