Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pointers ...

[es] :: C/C++ programiranje :: Pointers ...

[ Pregleda: 3222 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

festis-swe
Sebastijan

Član broj: 5856
Poruke: 3
*.osiguranje-zagreb.hr

ICQ: 162563615


Profil

icon Pointers ...18.10.2002. u 12:26 - pre 261 meseci
Imam veliki problem recimo da mislim da sam shvatio sta su pointeri .. ali imam problme ne znam kako da to ubacim u code .. Ne shvacam tocno jos sta su pointeri .. pointeri na funckiju na polje i pointer na pointer .. . Jel ima neko ko bi odvojio malo vremena i napiso nesto o tome jer sta Ma kolko muckao nece da shvati moj mozak ... Sad prije ispita sam jos odlucio procitat sta se spominje u svezi pointera u Demistificiranom C++ ali kolko sam vidio nema bas puno o tome.
Unaprijed zahvaljujem
Jag alskar dricka festis(cactus-lime)
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.telemaxx.net



+7169 Profil

icon Re: Pointers ...18.10.2002. u 12:44 - pre 261 meseci
Pointer ti je jednostavno "pokazivac" na memorijsku lokaciju - znaci, ako je arhitektura 32-bitna, pointer je jedan 32-bitni broj koji pokazuje na mem lokaciju.

Dakle, ako imas:

int a;
int b;
int *pokazivac_na_a;

pokazivac_na_a = &a; // adresa od a


i sada:

Citat:

*POINTER menja memorijsku adresu pointera


a = 5 je isto sto i *pokazivac_na_a = 5;

a ako uradis

Citat:

Menjanje pointera menja samo adresu na koju pointer pokazuje, ne vrednost te adrese


pokazivac_na_a = &b - ti si promenio adresu pointera na adresu B

vrsta pointera je bitna za racunske operacije, znaci:

pokazivac_na_a++ // uvecava adresu za 1 INT (32-bita na x86)

*pokazivac_na_a++ // uvecava >A (to na sta pointer "pokazuje")< za 1


Dakle:

int *varijabla -- adresa koja pokazuje na neki integer

&variabla -- daje adresu neke varijable (pointer na)


-- Pointer na pointer

Isto, samo sto ne pokazuje na neku memorijsku lokaciju, vec pokazuje na novi pointer... tako mozes u nedogled :)

int *a;
int **b;

b = &a; -> b pokazuje na pointer a


DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.telemaxx.net



+7169 Profil

icon Re: Pointers ...18.10.2002. u 12:48 - pre 261 meseci
Dalje:

int niz[256];
int *nizptr;


nizptr = niz; // isto sto i nizptr = &niz[0];

*(nizptr + 4) = 5 // isto sto i niz[4] = 5;

*nizptr++; // uvecava memorijsku adresu niz[0] za 1

nizptr++; // ako je nizptr bila adresa od niz[0] sada je nizptr adresa od niz[1]

nizptr[5] = 0; // isto sto i niz[5] = 0, jer ptr[a] = b je isto sto i *(ptr + a) = b

&niz[n] znaci ADRESA OD niz[n]
niz[n] znaci VREDNOST OD niz[n]

znaci:

pravilno: nizptr = &niz[5] // nizptr sada pokazuje na niz[5]

nepravilno: nizptr = niz[5] // nizptr ce sada pokazivati na adresu koja je jadnaka vrednosti niz[5], a ako je to 0 onda mozes dobiti page fault ako se igras sa tom adresom ;-)


nizptr = malloc(sizeof(int)*256); // nizptr sada postaje pointer na novi memorijski blok od 256 intova

free(nizptr); // dealociras memoriju koju si alocirao sa malloc()

...




DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16683
*.telemaxx.net



+7169 Profil

icon Re: Pointers ...18.10.2002. u 12:57 - pre 261 meseci
// casting, short je 16-bita a int je 32-bita

int niz[256];
int *nizptr;
short *nizptr2;


nizptr = niz;
nizptr2 = (short *)niz;

nizptf2 + 16 je isto sto i niz + 8 jer je short 2 puta "kraci" od int-a

Pointerska aritmetika:

PTR + 1 je uvecavanje pointera za JEDNU "sirinu" (vrstu pointera)

nizptr++ uvecava nizptr pokazivac za jednu 32-bitnu adresu, tj za sizeof(int)

nizptr2++ uvecava nizprr2 pokazivac za jednu 16-bitnu adresu, tj za sizeof(short)



DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

MAD-MAX
Marko Mitic

Član broj: 351
Poruke: 1060
195.252.107.*

Jabber: MAD-MAX@jabber.com
ICQ: 65811355


Profil

icon Re: Pointers ...18.10.2002. u 23:23 - pre 261 meseci
Necu reci nista sto bi bilo od koristi festis-swe-u ali Ivane, mislim da bi trebalo ova 3 posta da spojis, malcice sredis i postavis kao top temu. Pomoci ce mnogima.
"If you do what you always did! - You will get what you always got!"
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pointers ...

[ Pregleda: 3222 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.