webForumDet fria alternativet

call by reference = pekare ?

3 svar · 379 visningar · startad av PAN

PANMedlem sedan feb. 2002130 inlägg
#1

Som jag förstår det så är en variabel som skickas till en funktion by reference en pekare till variabeln?

Förvirrad PAN

:q

PeWMedlem sedan juni 200010 432 inlägg
#2

Call by reference:

void foo(int *bar) {
  *bar=555;
}

int a=42;
foo(&a);

//a = 555

Man skickar alltså adressen via pekaren som då är en slags 'variabel' eller snarare en referens till adressen för variabel a, i det här fallet.

Ifall man bara gör:

void foo(int bar){
 bar=555;
}

int a=42;
foo(a);
// a = 42

Blir det 'call by value' och det innebär att värdet i a kopieras till bar. I funktionen foo så tilldelas bar i sin tur värdet 555, men genom att den variabeln bara finns i funktionen foo utan koppling till a, blir a oförändrad dvs värdet 42 står kvar. :)

Sang-draxMedlem sedan juli 2002581 inlägg
#3

I C++ finns även:

void foo(int& bar) {
  bar=555;
}

int a=42;
foo(a);

//a = 555
PANMedlem sedan feb. 2002130 inlägg
#4

Tack för svaren.

PAN

267 ms totalt · 3 externa anrop · v20260731065814-full.16f3d68c
138 ms — hämta forumlista (db)
127 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)