Kezdőoldal » Számítástechnika » Programozás » (C++) Pointer esetében mi a...

(C++) Pointer esetében mi a különbség a "&p" és a sima "p" között?

Figyelt kérdés

Hogy érthetőbb legyen:


int main()

{

int *p;


cout<<p<<endl<<&p<<endl<<*p<<endl;

return 0;

}


Pointer esetében tudtommal az alap "p" a memória címet tartalmazza. Alapból meg a változók esetében, a prefix & úgy szintén a memória címet tartalmazza. Pointer esetében ez hogyan is működik pontosan?


Mert nekem ezzel a programmal az első két sorban más memória helyeket ad meg. Ha esetleg be vezetek egy változót és azt a memória címet adom meg neki, akkor is eltér, de csak "kicsivel" az utolsó karakter tér csak el, de akkor is eltér :)


Tehát mi mit jelez?

Ha valamit rosszul fogalmaztam volna bocsánat, csak egész nap ezzel szórakoztam, és már belefáradtam :D



2014. jún. 8. 22:40
 1/5 A kérdező kommentje:

cout<<p<<endl<<&p<<endl<<*p<<endl;

akar lenni, csak valamiért rosszul másolta

2014. jún. 8. 22:42
 2/5 A kérdező kommentje:

Ez jó ez szórakozik velem, tök máshogy írja ki :D

Na de lényegtelen, úgy is tudni fogjátok hogy van helyesen :D

2014. jún. 8. 22:43
 3/5 anonim ***** válasza:
36%

Tehat van egy mutato int *p;


Ha erteket akarodi kiirni akkor printf(%d\n,*p);

Itt az asott memoria cimen levo erteket irja nem a memoria cimet.

Ha memoria cimet akarsz akkor printf(%x\n,p); igy hexaba kiirja a cimet.

A &p az jelen esetben megfelel egy int **t mutatonak.

Akor hasznaljak ha pld egy fugveny parametere int ** tipusu....

Namarmost a fenti kodreszlet mindig mas es mas ertket ir ki..

Ez azert van mert nincs alapertek adva a mutatonak....

O mutat (matat ) alamere aztan kiiratot a cimet ahova mutat es azt hogy az adott cimen mi van ....hat barmi lehet...nagy valoszinuseggel memoriaszemet...

Kerek zold pacsit...

2014. jún. 8. 22:53
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
100%

&p -> a p pointer memóriacíme

p -> a p pointer értéke = a mutatott cím

*p -> a p által mutatott "változó" értéke (jelen esetben egy int)


(nem muszáj, hogy változó legyen)

2014. jún. 8. 23:26
Hasznos számodra ez a válasz?
 5/5 iostream ***** válasza:

"Ha esetleg be vezetek egy változót és azt a memória címet adom meg neki, akkor is eltér, de csak "kicsivel" az utolsó karakter tér csak el, de akkor is eltér :) "


Ez ugye azért van, mert a stacken ül egy pointer meg az int egymás mellett, az elejük sizeof(int)-nyi távolságra. Ekkor a mutató az int címét fogja tárolni, a mutató címe meg az int címéhez képest lesz sizeof(int)-tel eltolva.

2014. jún. 9. 15:15
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!