8
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

Pokazivači (pointers)

  • 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

Page 1: Pokazivači  (pointers)

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

Page 2: Pokazivači  (pointers)

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.

Page 3: Pokazivači  (pointers)

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

Page 4: Pokazivači  (pointers)

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

Page 5: Pokazivači  (pointers)

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

Page 6: Pokazivači  (pointers)

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

Page 7: Pokazivači  (pointers)

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

Page 8: Pokazivači  (pointers)

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