Es gibt 3 Arten Übergabeparameter im Kopf einer Funktion zu vereinbaren. Abhängig von der Definition der Parameter greift man auf unterschiedliche Bereiche im Speicher zu, zusätzlich verändert sich die Schreibweise bei Referenzen.
Code:
1. Wertübergabe: beispiel(3);
int beispiel(int v)
{
v=v+1; // Veränderung einer Variable am Stack
return v;
}
2. Adressübergabe: a=3; beispiel2(&a);
void beispiel2(int * pv)
{
*pv= *pv + 1; // Veränderung der Originalvariable
}
3. Referenzübergabe (nur bei c++ vorhanden): a=3; beispiel3(a);
void beispiel3(int & ra)
{
ra= ra + 1; // Originalvariable wird verändert, trotzdem keine Zeigersemantik im Quellprogramm
// (kein *ra sondern ra und ra wird bedeutungsmäßig (semantisch) als int Wertvariable verwendet,
// von der Syntax her aber als Zeigervariable vom Parser und Compiler betrachtet.
}
mfg
Kikakater