Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 3.488 pregleda

Najnovija ↓

Treba mi pomoc oko pokazivaca ili pointera!!! 27.06.2007. u 23:38 · pre 235 meseci #1
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!!!
Re: Treba mi pomoc oko pokazivaca ili pointera!!! 28.06.2007. u 01:03 · pre 235 meseci #2
1. Pretraga ovog foruma -> rezultati vec na prvoj strani
2. Google -> milion rezultata
3. Pravopis i gramatika srpskog jezika, ponavljacesh 8. razred
Re: Treba mi pomoc oko pokazivaca ili pointera!!! 28.06.2007. u 15:48 · pre 235 meseci
izmenjeno 1 put, poslednji put X Files 28.06.2007. u 16:50
  1. X Files28.06.2007. u 16:50zapis iz teksta poruke
#5
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?
Re: Treba mi pomoc oko pokazivaca ili pointera!!! 29.06.2007. u 13:28 · pre 235 meseci #6
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




Potpis
SLIder.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme