Pointeri C++
Prikazujem rezultate 1 do 4 od 4

Tema: Pointeri C++

  1. #1
    Početnik
    Učlanjen
    22.09.2007.
    Pol
    muški
    Poruke
    40
    Reputaciona moć
    0

    Question Pointeri C++

    Jel moze neko da mi objasni cemu sluze pointeri u C++?



  2. #2
    Peruzzi nije na forumu
    је дошао тихо и ушао у легенду...
    Domaćin Peruzzi (avatar)
    Učlanjen
    03.08.2003.
    Pol
    muški
    Lokacija
    Shumadija
    Poruke
    3.924
    Reputaciona moć
    92

    Podrazumevano Re: Pointeri C++

    mogu da ti objasnim cemu sluze u C-u. Otprilike isto rade i u C++-u

    Prica je malo slozenija ali ukratko izgleda ovako nekako:

    Kada se program pokrene on se kompletan stavi u memoriju (virtuelnu = cache + ram + hdd = 4GB na 32b arhitekturi). Kompletan u smislu da se ucitavaju sve funkcije, ne samo main (iako se one pozivaju tek tamo negde kasnije).

    Pokazivac je promenljiva koja u sebi sadrzi adresu u memoriji. Na toj adresi nalazi se neki podatak. Zgodna je stvar sto pokazivac moze da pokaze i na funkciju, tj. adresu gde funkcija pocinje, pa se funkcija moze pozvati i preko pokazivaca. Takodje, niz je u stvari pokazivac na prvi (tj. nulti) element niza (jer su podaci u nizu spakovani redno - jedan za drugim).

    Kako sve ovo radi?

    Pokazivac se inicijalizuje isto kao i svaka druga promenljiva. Tip pokazivaca je u stvari tip podatka na koji on pokazuje. Evo ti jedan primer
    Kod:
    int a=3;   // pravi se promenljiva a tipa int, dobija vrednost 3
    int* pokazivac_na_a = &a;   // pravi se pokazivac na int, dobija adresu od a (sa & dobijas adresu promenljive)
    *pokazivac_na_a = 4;    // pokazana vrednost dobija vrednost 4, tj. isto sto i a=4
    pokazivac++;    // vrednost pokazivaca se menja, tj. pokazivac sad pokazuje na sledece polje u memoriji
    
    Ovo ne bi trebalo da bude tesko za sad.
    
    Kako to funkcionise sa nizom?
    
    int niz[10];    // pravi se niz sa deset int-ova. preciznije, alocira se 10 susednih lokacija u memoriji za int, a niz pokazuje na prvu
    
    *niz = 1;   // isto sto i niz[0]=1;
    niz++;
    *niz = 1;  // isto sto i niz[1]=1;
    *niz++;   // isto sto i niz[1]++;
    Ako hoces da pokazivac ne pokazuje ni na sta onda mu das vrednost NULL.

    Cemu sluze pokazivaci?
    Za pravljenje nizova neodredjene duzine - napravis slog koji sadrzi pokazivac na prethodni element, pokazivac na seledeci element i promenljivu clanicu niza. Ovo se zove dvostruko povezana lista.
    Zatim za visedimenzionalne nizove, za prenosenje funkcije kao argument drugoj funkciji (npr za qsort funkciju za pretrazivanje jedan od argumenata je pokazivac na funkciju koja uporedjuje koji je od dva elementa veci)

    Ovo je inace osetljiva tema pocetnicima (a i ja se trenutno mucim malo sa tim) i trebalo bi da je dobro proucis i shvatis kako radi. Verujem da ima dosta dobrih tutorijala i knjiga koje pokrivaju ovu temu, na srpskom. Potrazi medju izdanima Mikro knjige, CET-a. Mislim da je cak i krug izdao par dobrih knjiga za matematicku gimnaziju, tamo bi trebalo to da se uci u okviru C-a


  3. #3
    Početnik
    Učlanjen
    22.09.2007.
    Pol
    muški
    Poruke
    40
    Reputaciona moć
    0

    Podrazumevano Re: Pointeri C++

    Hvala, sad mi je jasnije.

  4. #4
    Peruzzi nije na forumu
    је дошао тихо и ушао у легенду...
    Domaćin Peruzzi (avatar)
    Učlanjen
    03.08.2003.
    Pol
    muški
    Lokacija
    Shumadija
    Poruke
    3.924
    Reputaciona moć
    92

    Podrazumevano Re: Pointeri C++

    drago mi je


Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •