Upload
shawna
View
31
Download
4
Embed Size (px)
DESCRIPTION
Pokazivači (pointers). Pokazivači omogućavaju: učinkovito predstavljanje složenih struktura podataka dijeljenje istog memorijskog prostora od strane različitih dijelova koda promjenu vrijednosti parametara funkcije (referentni parametri) dinamičku alokaciju memorije - PowerPoint PPT Presentation
Citation preview
1
Pokazivači (pointers)
Pokazivači omogućavaju: učinkovito predstavljanje složenih struktura
podataka dijeljenje istog memorijskog prostora od
strane različitih dijelova koda promjenu vrijednosti parametara funkcije
(referentni parametri) dinamičku alokaciju memorije učinkovito rukovanje sa poljima
2
Što je pokazivač?
Pokazivač je varijabla čiji je sadržaj adresa druge varijable.
U pokazivaču nije pohranjena vrijednost integer, double ili nekog drugog tipa.
U pokazivaču je spremljena adresa na kojoj je pohranjena korisna vrijednost.
Pokazivač sadrži memorijsku adresu objekta na koji pokazuje.
3
int N=5;int N=5;intint **kazalokazalo;;
kazalokazalo=&N=&N
pokazivačpokazivač
usmjeravanje usmjeravanje pokazivača na Npokazivača na N
deklaracija i deklaracija i definicija varijabledefinicija varijable
adresa adresa varijable varijable NN
deklaracija deklaracija pokazivača na intpokazivača na int
varijabla Nvarijabla N
Usmjeravanje (inicijalizacija) pokazivača
N
5
kazalo
?&N
4
Pridruživanje pokazivača
Kada pokazivaču pridružimo drugi pokazivač oni nakon toga sadrže istu adresu (pokazuju na istu adresu).
Pridruživanje pokazivača ne mijenja sadržaj na danoj adresi.
int a=2;
int *p1=&a,*p2;
p2=p1
p1
p2?
2 a
5
Primjeri sa kviza:
1) Za dane naredbe:
double x = 4.3;
double* ptr = &x;
1. Vrijednost ptr je:
2. Vrijednost *ptr je:
3. Što se događa u memorijskom prostoru kada se izvršava slijedeća naredba: *ptr = 24.9;
adresa varijable x
4.3
varijabla x dobiva vrijednost 24.9
6
2) Kakav ispis daje program? #include <iostream.h> int main() { char c = 'Q'; char *char_pointer = &c; cout<<c<<*char_pointer<<" "; c = 'Z'; cout<<c<<*char_pointer<<" "; *char_pointer = 'Y'; cout<<c<<*char_pointer<<" "; return 0; }
Ispis:
QQ ZZ YY
7
4) Dane su deklaracije:
double x = 3.14, y = 2.72;
double *ptr1, *ptr2;
ptr1 = &x;
ptr2 = &y;
Odaberi odgovor:
A. ptr1 pokazuje na istu varijablu kao i ptr2
B. ptr1 i ptr2 pokazuju na različite varijable sa istom vrijednosti
C. naredba je sintaktički neispravna
Kakav je učinak slijedećih dodjela (nisu uzastopne)?
1. ptr1 = ptr2;
2. *ptr1 = ptr2;
3. *ptr1 = *ptr2;
A
C
B
8
5) Dane su deklaracije:
struct TipProizvoda {int kolicina;
float cijena;
};
TipProizvoda Proizvod1 = {17, 4.99};
TipProizvoda* pokazivac = &Proizvod1;
Koji od slijedećih izraza predstavlja ispravni pristup sadržaju podatkovnog člana strukture Proizvod1?
1. (*pokazivac).cije88na
2. *pokazivac.cijena
3. pokazivac -> cijena
OK
OK