webForumDet fria alternativet

call by reference = pekare ?

C/C++

3 svar · 381 visningar · startad av PAN

Medlem sedan feb. 2002130 inlägg
Frågan#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

Medlem 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. :)

Medlem sedan juli 2002581 inlägg
#3

I C++ finns även:

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

int a=42;
foo(a);

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

Tack för svaren.

PAN

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)