c/c++/alle sprachen die das unterstützden
bsp für call by value
Code:
int main (void)
{
int a = 10;
increase(a);
printf ("%d", a);
}
void increase (int var)
{
var ++;
}
ausgabe hier ist 10, da der wert von a kopiert wird, in increase nur der kopierte wert erhöht wird, der originale wert aber gleich bleibt
Code:
int main (void)
{
int a = 10;
increase (&a);
printf ("%d", a);
}
void increase (int* var)
{
(*var)++;
}
ausgabe is 11, da die adresse von a übergeben wird, in increase der wert an der übergebenen adresse erhöht wird -> call by reference.
int* var ist ein pointer auf den speicherbereich eines ints mit dem namen var.
sprich ein pointer zeigt immer auf einen speicherbereich eines bestimmten typs, der wert eines pointers ist nur die adresse, auf die er zeigt