Definitionen?

chris0211

Grünschnabel
Hallo,

ich schreibe morgen in AWE eine Klausur "Grundlagen C++".
Könnte mir jemand von Euch vielleicht eine kurze Definition der fogenden drei Punkte geben?

- call by pointer
- call by value
- call by reference

nur mal kurz un knapp in 1-2 sätzen beschreiben was das genau ist! anwenden kann ich das so weit alles, aber ich weiß nie so recht was ich da wirklich mache!

wäre super!
 
call by reference:
Du übergibst einer Funktion nur die KOPIE einer ursprünglichen Variable ==> Verarbeitest du diese in deiner Funktion hat die ursprüngliche Variable danach den alten Wert.

call by pointer:
Du übergibst einer Funktion den Pointer auf eine usprüngliche Variable ==> Änderst du den Wert des Pointers in der Funktion, so ändert sich auch der Wert der Variable nach der Funktion.

call by value:
Müsste dann die direkte Änderung von Variablen sein (z.B. globale Variablen können überall geändert werden)


ehrlich gesagt bring ich aber auch ständig die letzten beiden durcheinander - also ganz sicher bin ich mir da auch nicht :-)
 
jedenfalls hat mir das schon sehr weiter geholfen! ich bin soinst absolut aufgeschmissen morgen in der klausur!


weiß im übrigen jemand, ob es auch eine einfach erklärung für zeiger in c++ gibt


also für extreme dummies?
 
@shutdown: Hast Du nicht "call by reference" und "call by value" verwechselt?

aboutIT hat gesagt.:
Bei der Parameterübergabe nach dem Mechanismus des call-by-value wird eine Kopie der Variable übergeben. Wenn in der Methode der übergebene Parameter geändert wird, hat dies keine Auswirkung auf den Originalparameter.

Bei der Parameterübergabe nach dem Mechanismus des call-by-reference wird der Parameter als Referenz übergeben. Wird in der Methode der Wert des Parameters geändert, so wirkt sich dies auch auf den Wert der übergebenen Variable in der aufrufenden Methode aus.

Gruß
.
 
Hallo,
wie Datic schon vermutete: Es ist genau andersrum
Bei Call by reference arbeitest mit einer Reference, also im Grunde mit nem Speicherbereich.
Bei Call by value wird durch den Funktionsaufruf eine Kopie angelegt = anderer Specherbereich und die Funktion bekommt nicht mit, wo die ursprüngliche Var liegt.

Beispiel:

void Klasse::machIrgendwas (LONG &x)
{
x=10;
}

void Klasse::machIrgendwas2 (LONG x)
{
x=10;
}

LONG variable;

variable = 5;

machIrgendwas(variable);

// variable ist hier dann 10
variable = 5;
machIrgendwas2(variable);
// danach ist variable immer noch 5

Hoffe das half.
Gruß
Klaus
 
Zurück