[ A-l-m-i-r @ 18.07.2007. 20:59 ] @
Pozdrav.
Početnik sam u c++, i trenutno se mučim sa pointerima, da li neko može da mi malo pomogne da savladam ovaj dio gradiva.

Trenutno učim iz nekoliko knjiga, kad zapne pređem na drugu i tako dalja, ali sam sad pravo zapeo na pointerima.

Da li bi neko mogao da mi malo pojasni ili upiti na neki link gdje je to fino objašnjeno i gdje bi jedan početnik kao ja mogao da skonta.

ps. najbolje učim iz primjera

[ tosheen_su @ 18.07.2007. 23:35 ] @
ako dobro znash engleski evo ti link gde je sve lepo objasnjeno
http://www.cplusplus.com/doc/tutorial/pointers.html

inace probacu da nadjem neke primere koje imam sa pointerima i koji nisu teshki za razumevanje pa cu ih uploadovati
[ A-l-m-i-r @ 19.07.2007. 20:24 ] @
Prije nego što sam postavio ovu temu čitao sam taj materijal sa cplusplus-a.

Negdje sam pročitao, možda i na ovom forumu, da pointere treba učiti kad se dobro savlada ostalo gradivo classe, funkcije i etc.


[ BurgerPera @ 20.07.2007. 04:26 ] @
Reci sta te muci konkretno....
[ A-l-m-i-r @ 25.07.2007. 20:56 ] @
Evo jedam manji primjer na kojem pokušajem da skontam šta se dešava ovdje:

Code:

    ....
    int i(10);//ovo mi je jasno
    int *p = &i;//adresa i u pokazivač
    *p = 1;//ovaj dio nekontam, donekle kontam...
    cout << i << endl;//10
    ....


Izabrao sam lakši primjer kako bi mi neko bolje objasno šta se tu tačno desi.
[ pcaca @ 26.07.2007. 03:32 ] @
Najprostije receno: kada pre pointera ima * ("*" se zove dereference operator) onda radis sa vrednosti koja se nalazi na memoriskoj adresi smestenu u taj pointer. Kada nema * onda menjas adresu na koju taj pointer pokazuje.

Znaci u tvoji kod u pointer p cuvas adresu na koju se nalazi vrednost promenjlive i. Sa *p = 1 fakticki menjas vrednost promenjlive i na 1, jer pomocu * pristupas memoriske lokacije cija adresa se nalazi u p, a to je adresa promenjlive i.
[ A-l-m-i-r @ 27.07.2007. 15:38 ] @
Prvo sam radio na ovome:
Code:

   ...  
    int a(1), b(2);
    int *p = &a;
    int temp = b;
    b = *p;
    p = &temp;
    a = *p;
    cout << a << endl;//a = 2;
    cout << b << endl;//b = 1;
    ...

Pa sam onda to isto uradio preko funkcije
Code:

void zamijeni(int *x, int *y);

int main()
{
   int a(1), b(2) 
   zamijeni(&x, &y);
   }

void zamijeni (int *x, int *y){
     int temp; 
     temp = *x;
     *x = *y;
     *y = temp;
}

Otprilike kontam šta se tu dešava, ovaj primjer funkcije sam radio bez pokazivača, sad sam
koristio pokazivače kako bi zamijenio vrijednosti preko funkcije.

Primjer nisam radio po knjizi već sam sam dolazio do ovog rešenja, ono što me trenutno buni je
ovo :
Code:

temp = *x; //kako sad pokazivač u int temp?
*x = *y;// pa ovo 
*y = temp;//i ovo


Ovaj primjer radi, vjerovatno postoji bolji način za koji ja još ne znam, da li je ovo ok i da li se
može napisati elegantnije, ali me prije svega interesuje pojašnjenje.

[ laserjat @ 27.07.2007. 23:48 ] @
Code:
 temp = *x ;


U temp sad stavljas sadrzaj na koji pokazuje pokazivac x.Imas * znaci vrsi se dereferenciranje.
Code:
*x  = *y ; 


ovde radis isto samo sto sad u ono na sta pokazuje x upisuje sadrzaj na koji je pokazivao y.

Code:
*y = temp;


u ono na sta pokazuje y upisujes temp.

Da ima na primer temp = & x; onda bi u temp bila upisana neka hex vrednost koja predstavlja adresu promenljive x.
[ vladaboy93 @ 31.07.2007. 21:17 ] @
http://www.elitesecurity.org/t...oc-oko-pokazivaca-ili-pointera

pogledaj mozda pomogne

pozdrav!