[ vladaboy93 @ 27.06.2007. 22:38 ] @
Ucim C++ iz knjige i Dosad mi je sve bilo jasno dok nisam stigo do pointera to mi nekako neulazi u glavu:

Za cega i kada se oni koriste?
I kako se oni definisu i koriste?

Ako bi neko mogo detaljno da mi objasni....na jednostavan nacin

Unapred ZahvalaN!!!
[ NastyBoy @ 28.06.2007. 00:03 ] @
1. Pretraga ovog foruma -> rezultati vec na prvoj strani
2. Google -> milion rezultata
3. Pravopis i gramatika srpskog jezika, ponavljacesh 8. razred
[ vladaboy93 @ 28.06.2007. 09:56 ] @
Sa ovim ovde tipom gore ne vredi ni raspravljati....... ako on oce druge da vredja, sto se spustati na njegov nivo......


[ Sladjan2S @ 28.06.2007. 14:16 ] @
Citat:
vladaboy93
I kako se oni definisu i koriste?


O tome kako se oni koriste mozes vidjeti na http://www.cplusplus.com/doc/tutorial/pointers.html

[ vladaboy93 @ 28.06.2007. 14:48 ] @
Hvala na linku ali nazalost isto tako je objasnjeno u mojoj knjizi

Ako bi neko mogao svojim recima da mi kaze cemu sluze pokazivaci... i kako da ih koristim?



[Ovu poruku je menjao X Files dana 28.06.2007. u 16:50 GMT+1]
[ Yu Raider @ 29.06.2007. 12:28 ] @
Evo ti kratko objašnjenje pošto moram da palim u grad :D

Dakle, sigurno si već u svojoj knjizi pročitao da se pointeri definišu kao "pokazivači na memorijsku adresu". Da, znam kako to zvuči :D.
Suština pointera je - oni ne sadrže vrednost. Ti si navikao da u paskalu napraviš neku integer promenljivu i, recimo, dodeliš joj vrednost 3. Takva promenljiva zauzme mesto u memoriji na određenoj memorijskoj adresi. Pointeri ne sadrže vrednost, nego poziciju memorijske adrese.

Evo primera u C-u, odnosno C++-u:
Code:

int a = 4; // a = 4
int *b = &a; // b = &a , ovo & je tzv. reference operator, odnosno operator koji uzima memorijsku adresu neke promenljive

cout << a << endl;
cout << b << endl;


Primetićeš da se u prvom redu ispisuje broj 4, a u drugom neku bezveznu heksadecimalnu vrednost. Ta vrednost je memorijska adresa tvoje promenljive a.
E sad, sve je to cool i pointeri služe za manipulaciju memorijskim adresama. Ali, šta će to tebi? Pa, evo ti jednostavan odgovor.

Code:

int a = 4;
int *b = &a;

*b = 8; // ovo je tzv. dereference operator, odnosno operator koji uzima vrednost iz memorijske adrese neke promenljive
cout << a << endl;


Ovde primećuješ da si promenio vrednost b (koji je pointer na promenljivu a), a da se zapravo promenila promenljiva a!
Što znači da kada ti treba recimo, funkcija za sabiranje, pointeri su jako korisni jer:

Code:


int DodajJedan(int a)
{
   return a + 1;
}

void DodajJedanPrekoPointera(int* a)
{
  *a += 1;
}

int main()
{
 int broj = 5;
 DodajJedan(broj);
 DodajJedanPrekoPointera(&broj);
}


Ovde će nakon manipulacije promenljiva broj sadržati vrednost 6. Kada baciš oko na kod, vidiš da funkcija koja dodaje 1 na promenljivu preko pointera nema povratnu vrednost, već direktno manipuliše promenljivom. To povećava brzinu izvršavanja tvog programa i smanjuje zauzeće memorije. Naravno, u ovom slučaju to ti ne pomaže mnogo, ali u radu sa velikim količinama memorije pointeri su nezamenljivi.

Pointeri, međutim, mogu biti jako opasni ukoliko se ne koriste kako treba.
Ovo su ti samo neke osnovne informacije, ima tu još mnogo toga, pa ako hoćeš, pošalji mi PM pa da ti dam MSN adresu ili nešto slično ako ti treba neko dodatno objašnjenje.

Pozdrav