• 8 odgovora
  • 4.309 pregleda
muke sa pointerima 18.07.2007. u 20:59 · pre 234 meseci #1
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

Re: muke sa pointerima 19.07.2007. u 20:24 · pre 234 meseci #3
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.


Re: muke sa pointerima 25.07.2007. u 20:56 · pre 234 meseci #5
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.
Re: muke sa pointerima 26.07.2007. u 03:32 · pre 234 meseci #6
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.
Re: muke sa pointerima 27.07.2007. u 15:38 · pre 234 meseci #7
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.

Re: muke sa pointerima 27.07.2007. u 23:48 · pre 234 meseci #8
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme