Si 12 Slozeni Tipovi Podataka

  • Uploaded by: MIT - Mašinski fakultet
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Si 12 Slozeni Tipovi Podataka as PDF for free.

More details

  • Words: 5,881
  • Pages: 89
Uvod

struct

typedef

enum

Niz slogova

Unija

Sloˇzeni tipovi podataka Softversko inˇzenjrstvo

Zlatko Petrovi´c

April 20, 2008

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Uvod– 1/1

Broj razliˇcitih vrsta podataka u C-u je zaista impresivan. Do sada smo izuˇcavali kako da grupiˇsemo homogene podatke (nizovi i matrice). Veliki broj praktiˇcnih primena zahteva grupisanje podataka razliˇcitog osnovnog tipa. Ponekad se o tipu podatka mora odluˇciti naknadno, za to sluˇze: Strukture: struct...{...}...; Unije: union...{...}...; enum...{...}...;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

struct– 1/5 Obrada poslovanja vezanog za studente maˇsinskog fakulteta zahteva katalogiziranje podataka o svakom studentu: Broj indeksa Godina upisa na fakultet Godina studija Modul ili usmerenje Adresa stanovanja ZIP Mesto Oˇcigledno je da su podaci po studentu heterogeni – meˇsavina numeriˇckih i tekstualnih podataka Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Adresa

ZIP

const ptr

struct– 2/5

Indeks

GodUpisa

GodStudija

Modul

Mesto

Table: Podaci su homogeni po kolonama i heterogeni po redovima

Linja u tabeli se naziva: slog! Softver za obradu poslova vezanih za studente bi mogao da se napravi pomo´cu nizova pri ˇcemu bi u svakom nizu bili homogeni podaci koji odgovaraju jednoj koloni. Takav pristup je neracionalan jer bi svaka izmena strukture tabele zahtevala ukidanje ili otvaranje novog niza. Zlatko Petrovi´ c Sloˇzeni tipovi podataka

struct– 3/5 Opis podataka o studentu u C-u bi mogao da izgleda ovako: struct Studentski_slog { unsigned int BrIndeksa; unsigned int God_Upisa; char Ime[25]; char Prezime[25]; char Sr_slovo; char Maticni_br[13]; char Vrsta_stud; unsigned int God_stud; char Modul; char Adresa[30]; unsigned int ZIP; char Mesto[20]; char AdresaB[30]; char MestoB[20]; unsigned int ZIPB; char Nacin_stud; };

/* /* /* /* /* /* /* /* /* /* /* /* /* /* /* /*

Kljuˇ c sa godinom upisa */ Godina upisa na fakultet */ Ime studenta */ Prezime studenta (prezimena) */ Srednje slovo */ Matiˇ cni broj studenta */ Vrsta studija, akademske, magist Godina studija (upisana godina) Modul (MIT) */ Adresa stanovanja */ zip adrese stanovanja */ Mesto stanovanja */ Adresa boravka */ Mesto boravka */ zip adrese boravka */ Redovni, vanredni, .. */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 4/5 Prethodnom deklaracijom je samo definisan ˇsablon (opis sloga), nikakva memorija za ˇcuvanje podataka nije zauzeta! Zauzimanje prostora u memoriji prema definisanom ˇsablonu se moˇze obaviti na dva naˇcina: Zajedno sa opisom ˇsablona Posebnom deklaracijom

Opˇsta komanda za opis ˇsablona i definisanje promenjive za ˇcuvanje podataka: struct roba{ char naziv[30]; int kolicina; int cena; } slog skladista; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

/* Naziv artikla */ /* Koliko komada u skladiˇ stu */ /* Cena po komadu */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 4/5 Prethodnom deklaracijom je samo definisan ˇsablon (opis sloga), nikakva memorija za ˇcuvanje podataka nije zauzeta! Zauzimanje prostora u memoriji prema definisanom ˇsablonu se moˇze obaviti na dva naˇcina: Zajedno sa opisom ˇsablona Posebnom deklaracijom

Opˇsta komanda za opis ˇsablona i definisanje promenjive za ˇcuvanje podataka: struct roba{ char naziv[30]; int kolicina; int cena; } slog skladista; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

/* Naziv artikla */ /* Koliko komada u skladiˇ stu */ /* Cena po komadu */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 4/5 Prethodnom deklaracijom je samo definisan ˇsablon (opis sloga), nikakva memorija za ˇcuvanje podataka nije zauzeta! Zauzimanje prostora u memoriji prema definisanom ˇsablonu se moˇze obaviti na dva naˇcina: Zajedno sa opisom ˇsablona Posebnom deklaracijom

Opˇsta komanda za opis ˇsablona i definisanje promenjive za ˇcuvanje podataka: struct roba{ char naziv[30]; int kolicina; int cena; } slog skladista; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

/* Naziv artikla */ /* Koliko komada u skladiˇ stu */ /* Cena po komadu */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 4/5 Prethodnom deklaracijom je samo definisan ˇsablon (opis sloga), nikakva memorija za ˇcuvanje podataka nije zauzeta! Zauzimanje prostora u memoriji prema definisanom ˇsablonu se moˇze obaviti na dva naˇcina: Zajedno sa opisom ˇsablona Posebnom deklaracijom

Opˇsta komanda za opis ˇsablona i definisanje promenjive za ˇcuvanje podataka: struct roba{ char naziv[30]; int kolicina; int cena; } slog skladista; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

/* Naziv artikla */ /* Koliko komada u skladiˇ stu */ /* Cena po komadu */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 4/5 Prethodnom deklaracijom je samo definisan ˇsablon (opis sloga), nikakva memorija za ˇcuvanje podataka nije zauzeta! Zauzimanje prostora u memoriji prema definisanom ˇsablonu se moˇze obaviti na dva naˇcina: Zajedno sa opisom ˇsablona Posebnom deklaracijom

Opˇsta komanda za opis ˇsablona i definisanje promenjive za ˇcuvanje podataka: struct roba{ char naziv[30]; int kolicina; int cena; } slog skladista; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

/* Naziv artikla */ /* Koliko komada u skladiˇ stu */ /* Cena po komadu */

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 5/5 U primeru na prethodnom slajdu je roba opis ˇsablona! Dok je slog skladista oznaka za stvarni prostor u memoriji gde se ˇcuvaju podaci! U struct deklaraciji moˇze se izostaviti ili roba (kada ˇsablon nema svoje ime) ili slog skladista (kada nemamo zauzet prostor za promenjivu definisanu ˇsablonom), ali nikako oba naziva istovremeno! Relativno bi mala bila korist od samo jedne promenjive slog skladista ukoliko se ne bi mogle deklarisati i druge istog tipa, za to postoji deklaracija typedef!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 5/5 U primeru na prethodnom slajdu je roba opis ˇsablona! Dok je slog skladista oznaka za stvarni prostor u memoriji gde se ˇcuvaju podaci! U struct deklaraciji moˇze se izostaviti ili roba (kada ˇsablon nema svoje ime) ili slog skladista (kada nemamo zauzet prostor za promenjivu definisanu ˇsablonom), ali nikako oba naziva istovremeno! Relativno bi mala bila korist od samo jedne promenjive slog skladista ukoliko se ne bi mogle deklarisati i druge istog tipa, za to postoji deklaracija typedef!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 5/5 U primeru na prethodnom slajdu je roba opis ˇsablona! Dok je slog skladista oznaka za stvarni prostor u memoriji gde se ˇcuvaju podaci! U struct deklaraciji moˇze se izostaviti ili roba (kada ˇsablon nema svoje ime) ili slog skladista (kada nemamo zauzet prostor za promenjivu definisanu ˇsablonom), ali nikako oba naziva istovremeno! Relativno bi mala bila korist od samo jedne promenjive slog skladista ukoliko se ne bi mogle deklarisati i druge istog tipa, za to postoji deklaracija typedef!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

struct– 5/5 U primeru na prethodnom slajdu je roba opis ˇsablona! Dok je slog skladista oznaka za stvarni prostor u memoriji gde se ˇcuvaju podaci! U struct deklaraciji moˇze se izostaviti ili roba (kada ˇsablon nema svoje ime) ili slog skladista (kada nemamo zauzet prostor za promenjivu definisanu ˇsablonom), ali nikako oba naziva istovremeno! Relativno bi mala bila korist od samo jedne promenjive slog skladista ukoliko se ne bi mogle deklarisati i druge istog tipa, za to postoji deklaracija typedef!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 1/7 C dozvoljava definisanje sopstvenog tipa promenjivih Opˇsti oblik typedef naredbe: typedef deklaracija-tipa; Naprimer: typedef int count; deklariˇse novu vrstu promenjivih count koja se primenjuje: count i, j; Ista stvar se moˇze ostvariti sa: #define count int count i, j; typedef dozvoljava znatno sloˇzeniju primenu od gore navedene! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 1/7 C dozvoljava definisanje sopstvenog tipa promenjivih Opˇsti oblik typedef naredbe: typedef deklaracija-tipa; Naprimer: typedef int count; deklariˇse novu vrstu promenjivih count koja se primenjuje: count i, j; Ista stvar se moˇze ostvariti sa: #define count int count i, j; typedef dozvoljava znatno sloˇzeniju primenu od gore navedene! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 1/7 C dozvoljava definisanje sopstvenog tipa promenjivih Opˇsti oblik typedef naredbe: typedef deklaracija-tipa; Naprimer: typedef int count; deklariˇse novu vrstu promenjivih count koja se primenjuje: count i, j; Ista stvar se moˇze ostvariti sa: #define count int count i, j; typedef dozvoljava znatno sloˇzeniju primenu od gore navedene! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 1/7 C dozvoljava definisanje sopstvenog tipa promenjivih Opˇsti oblik typedef naredbe: typedef deklaracija-tipa; Naprimer: typedef int count; deklariˇse novu vrstu promenjivih count koja se primenjuje: count i, j; Ista stvar se moˇze ostvariti sa: #define count int count i, j; typedef dozvoljava znatno sloˇzeniju primenu od gore navedene! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 1/7 C dozvoljava definisanje sopstvenog tipa promenjivih Opˇsti oblik typedef naredbe: typedef deklaracija-tipa; Naprimer: typedef int count; deklariˇse novu vrstu promenjivih count koja se primenjuje: count i, j; Ista stvar se moˇze ostvariti sa: #define count int count i, j; typedef dozvoljava znatno sloˇzeniju primenu od gore navedene! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 2/7 #include <stdio.h> #include <stdlib.h> int i, j; int main() { typedef char sah[8]; sah red; for(i=0; i<8; i++) { for(j=0; j<8; j++) red[j]=(i+j)%2; for(j=0; j<8; j++) printf("%1d", red[j]); printf("\n"); } system("PAUSE"); return 0; } Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef– 3/7

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 4/7

Prednost typedef instrukce je najve´ca kod struktura. Tipiˇcan primer primene ilustruje slede´ci programˇci´c, koji mnoˇzi dva kompleksna broja.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 4/7

Prednost typedef instrukce je najve´ca kod struktura. Tipiˇcan primer primene ilustruje slede´ci programˇci´c, koji mnoˇzi dva kompleksna broja.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

typedef– 5/7

#include <stdio.h> #include <stdlib.h> struct complexStr { int real; int imag; }; typedef struct complexStr komplex;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

typedef– 6/7 int main(void) { komplex z, w, p; z.real w.real p.real p.imag

= = = =

5; z.imag = 2; 2; w.imag = 5; z.real*w.real - z.imag*w.imag; z.real*w.imag + z.imag*w.real;

printf("z = %d +i%d\n",z.real,z.imag); printf("w = %d +i%d\n",w.real,w.imag); printf("\nz*w = %d + i%d\n\n",p.real,p.imag); system("PAUSE"); return 0; } Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

typedef– 7/7

pgflastimage

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 1/2

Promenjiva koja moˇze imati samo ograniˇceni broj vrednosti. Te vrednosti se pozivaju preko simboliˇcke oznake. Raˇcunar svakom simbolu dodeljuje jednoznaˇcni ceo broj. Opˇsta enum naredba enum enum ime { oznaka-1, oznaka-2, ...} ime promenjive; Fragment koda gde se ilustruje primena je na slede´cem slajdu. Simboliˇcka imena se obiˇcno piˇsu velikim slovima!

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

enum– 2/2

enum dani_u_nedelji {PONEDELJAK, UTORAK, SREDA, CETVRTAK, PETAK, SUBOTA, NEDELJA }; /* A sada primena */ enum dani_u_nedelji dan=SREDA;

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Niz slogova– 1/2 Nizovi i slogovi se mogu kombinovati. Recimo da zelimo da zabelezimo vremena obilaska svakog kruga bolida formule 1. Tada bi slog izgledao otprilike ovako: struct vremena { int sat; int minut; int sekund; }; const int BROJ KRUGOVA=72; struct vremena vreme[Broj KRUGOVA]; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Niz slogova– 1/2 Nizovi i slogovi se mogu kombinovati. Recimo da zelimo da zabelezimo vremena obilaska svakog kruga bolida formule 1. Tada bi slog izgledao otprilike ovako: struct vremena { int sat; int minut; int sekund; }; const int BROJ KRUGOVA=72; struct vremena vreme[Broj KRUGOVA]; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Niz slogova– 1/2 Nizovi i slogovi se mogu kombinovati. Recimo da zelimo da zabelezimo vremena obilaska svakog kruga bolida formule 1. Tada bi slog izgledao otprilike ovako: struct vremena { int sat; int minut; int sekund; }; const int BROJ KRUGOVA=72; struct vremena vreme[Broj KRUGOVA]; Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Niz slogova– 2/2

Tada bi se vreme u i-tom krugu preuzelo: h = vreme[i-1].sat; m = vreme[i-1].minut; s = vreme[i-1].sekund; Struktura se moˇze inicirati u vreme deklarisanja: struct vreme start stop[2] ={ {10, 12, 5}, {10, 14, 26} };

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Niz slogova– 2/2

Tada bi se vreme u i-tom krugu preuzelo: h = vreme[i-1].sat; m = vreme[i-1].minut; s = vreme[i-1].sekund; Struktura se moˇze inicirati u vreme deklarisanja: struct vreme start stop[2] ={ {10, 12, 5}, {10, 14, 26} };

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Unija– 1/3

Slog od viˇse polja koji dozvoljava da sva polja dele istu memorijsku lokaciju Primer gde dve razliˇcite vrste podataka dele istu lokaciju: union polje{ long int broj; float realniBroj; }; Slede´ci programˇci´c ilustruje primenu

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Unija– 1/3

Slog od viˇse polja koji dozvoljava da sva polja dele istu memorijsku lokaciju Primer gde dve razliˇcite vrste podataka dele istu lokaciju: union polje{ long int broj; float realniBroj; }; Slede´ci programˇci´c ilustruje primenu

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Unija– 1/3

Slog od viˇse polja koji dozvoljava da sva polja dele istu memorijsku lokaciju Primer gde dve razliˇcite vrste podataka dele istu lokaciju: union polje{ long int broj; float realniBroj; }; Slede´ci programˇci´c ilustruje primenu

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Unija– 2/3 #include <stdio.h> #include <stdlib.h> /* Definisanje promenjive da cuva realan ili ceo broj, ali ne oba istovremeno. */ union value { long int broj; float realniBr; } data; int main() { data.realniBr = 5.0; printf("%f, %d\n",data.realniBr,data.broj); data.broj=4; printf("%f, %d\n\n",data.realniBr,data.broj); system("PAUSE"); return 0; }

Uvod

struct

Unija– 3/3

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 1/19

Adresu (mesto gde se smeˇsta vrednost) promenjive odredjuje prevodilac u fazi prevodjenja Razlikujemo tri stvari vezano za promenjive: ime, adresu, sadrˇzaj Pointer je mala struktura koja takodje ima ime, adresu i sadrˇzaj (sadrˇzaj pokazuje na mesto u memoriji); dva su operatora od znaˇcaja za rad sa pointerima: & – adresni operator i * – dereferentni operator Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 1/19

Adresu (mesto gde se smeˇsta vrednost) promenjive odredjuje prevodilac u fazi prevodjenja Razlikujemo tri stvari vezano za promenjive: ime, adresu, sadrˇzaj Pointer je mala struktura koja takodje ima ime, adresu i sadrˇzaj (sadrˇzaj pokazuje na mesto u memoriji); dva su operatora od znaˇcaja za rad sa pointerima: & – adresni operator i * – dereferentni operator Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 1/19

Adresu (mesto gde se smeˇsta vrednost) promenjive odredjuje prevodilac u fazi prevodjenja Razlikujemo tri stvari vezano za promenjive: ime, adresu, sadrˇzaj Pointer je mala struktura koja takodje ima ime, adresu i sadrˇzaj (sadrˇzaj pokazuje na mesto u memoriji); dva su operatora od znaˇcaja za rad sa pointerima: & – adresni operator i * – dereferentni operator Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 1/19

Adresu (mesto gde se smeˇsta vrednost) promenjive odredjuje prevodilac u fazi prevodjenja Razlikujemo tri stvari vezano za promenjive: ime, adresu, sadrˇzaj Pointer je mala struktura koja takodje ima ime, adresu i sadrˇzaj (sadrˇzaj pokazuje na mesto u memoriji); dva su operatora od znaˇcaja za rad sa pointerima: & – adresni operator i * – dereferentni operator Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

Pokazivaˇci (pointeri) uvod– 2/19 Razlikujemo slede´ca ˇcetiri sluˇcaja: alfa – Naziv promenjive kada se koristi u izrazima kompajler uzima sadrˇzaj memorije gde se nalazi alfa. &alfa – Adresa gde se ˇcuva podatak za promenjivu alfa. alfa ptr – Promenjiva koja pamti adresu u memoriji raˇcunara. *alfa ptr – Sadrˇzaj koji se nalazi na adresi alfa ptr. &alfa ptr – Je adresa gde se ˇcuvaju vrednosti pokazivaˇca (peti ne mnogo bitan sluˇcaj).

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 3/19 #include <stdio.h> #include <stdlib.h> int alfa; int *alfa_ptr; int main() { alfa = 2; printf("alfa %d\n",alfa); alfa_ptr = &alfa; *alfa_ptr = 3; printf("alfa: %d\n",alfa); printf("*alfa_ptr: %d\n\n",*alfa_ptr); system("PAUSE"); return 0; } Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Pokazivaˇci (pointeri) uvod– 4/19

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 5/19

Pokazivaˇ ci i nizovi Pretpostavimo ovakvu deklaraciju: char niz[5]; char *niz ptr=&niz[0]; Tada je niz[0] isto ˇsto i *niz ptr Takodje je i niz[1] isto ˇsto i *(niz ptr+1) Takodje i niz[2] isto ˇsto i *(niz ptr+2) itd.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 5/19

Pokazivaˇ ci i nizovi Pretpostavimo ovakvu deklaraciju: char niz[5]; char *niz ptr=&niz[0]; Tada je niz[0] isto ˇsto i *niz ptr Takodje je i niz[1] isto ˇsto i *(niz ptr+1) Takodje i niz[2] isto ˇsto i *(niz ptr+2) itd.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 5/19

Pokazivaˇ ci i nizovi Pretpostavimo ovakvu deklaraciju: char niz[5]; char *niz ptr=&niz[0]; Tada je niz[0] isto ˇsto i *niz ptr Takodje je i niz[1] isto ˇsto i *(niz ptr+1) Takodje i niz[2] isto ˇsto i *(niz ptr+2) itd.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 5/19

Pokazivaˇ ci i nizovi Pretpostavimo ovakvu deklaraciju: char niz[5]; char *niz ptr=&niz[0]; Tada je niz[0] isto ˇsto i *niz ptr Takodje je i niz[1] isto ˇsto i *(niz ptr+1) Takodje i niz[2] isto ˇsto i *(niz ptr+2) itd.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇci (pointeri) uvod– 5/19

Pokazivaˇ ci i nizovi Pretpostavimo ovakvu deklaraciju: char niz[5]; char *niz ptr=&niz[0]; Tada je niz[0] isto ˇsto i *niz ptr Takodje je i niz[1] isto ˇsto i *(niz ptr+1) Takodje i niz[2] isto ˇsto i *(niz ptr+2) itd.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Pokazivaˇ ci

const ptr

Pokazivaˇci (pointeri) uvod– 6/19 #include <stdio.h> #include <stdlib.h> #define NIZ_DIM 10 char niz[NIZ_DIM+1] = "0123456789"; int i; int main() { printf("&niz[i] (niz + i) niz[i] *(niz+i)\n\n"); for(i=0;i
Uvod

struct

typedef

enum

Niz slogova

Pokazivaˇci (pointeri) uvod– 7/19

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Pokazivaˇci (pointeri) uvod– 8/19

Primer Napisati funkcijski potprogram za izraˇcunavanje povrˇsine i poloˇzaja teˇziˇsta za ravanske figure sastavljene iz pravolinijskih segmenata. Kontura se zadaje koordinatama krajeva pravolinijskih segmenata pri ˇcemu je numerisanje obavljeno u smeru kretanja kazaljke na satu. Funkcijski potprogram treba da obezbedi da je kontura zatvorena jer se prva i poslednja taˇcka ne ponavljaju.

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Pokazivaˇci (pointeri) uvod– 9/19

#include <stdio.h> #include <stdlib.h> #define MAX_DIM 100 float x[MAX_DIM], y[MAX_DIM];

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Pokazivaˇci (pointeri) uvod– 10/19 void presek (float x[], float y[], int N, float *xT, float *yT, float *pov) { int i; float Sx=0.0, Sy=0.0, pi, A, B, C, D, Dx, Dy; *pov=0.0; x[N] = x[0]; y[N] = y[0]; for(i=0; i
Pokazivaˇci (pointeri) uvod– 11/19

if(Dy != 0) { B = Dx/Dy; A = x[i]-y[i]*B; C = y[i+1]*y[i+1]-y[i]*y[i]; D = y[i+1]*y[i+1]*y[i+1]-y[i]*y[i]*y[i]; Sy = Sy + A*A*Dy + A*B*C+B*B*D/3; } } *xT = -Sy/(*pov*2); *yT = Sx/(*pov*2); }

Pokazivaˇci (pointeri) uvod– 12/19 int main() { int N, i; float xT, yT, pov; printf("Unesi broj tacaka konture N = "); scanf("%d",&N); for(i=0; i
yT = %f\n\n",pov,xT,yT);

Uvod

struct

typedef

enum

Niz slogova

Pokazivaˇci (pointeri) uvod– 13/19

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Unija

Pokazivaˇ ci

const ptr

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 1/2 Deklarisanje pokazivaˇca koji pokazuju na stalno maste je pomalo zbunjuju´ce, recimo: const int broj = 5; Ukazuje da je slede´ca naredba nelegalna (daje greˇsku): broj=8; Po analogiji bi trebalo da deklaracija: const char *ptr="Paja Patak"; deklariˇse pokazivaˇc koji pokazuje uvek na isto mesto u memoriji, ali nije tako! Pravilna deklaracija glasi: char *const ptr="Paja Patak"; /* Pokazivaˇ c na uvek isto mesto */

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 1/2 Deklarisanje pokazivaˇca koji pokazuju na stalno maste je pomalo zbunjuju´ce, recimo: const int broj = 5; Ukazuje da je slede´ca naredba nelegalna (daje greˇsku): broj=8; Po analogiji bi trebalo da deklaracija: const char *ptr="Paja Patak"; deklariˇse pokazivaˇc koji pokazuje uvek na isto mesto u memoriji, ali nije tako! Pravilna deklaracija glasi: char *const ptr="Paja Patak"; /* Pokazivaˇ c na uvek isto mesto */

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 1/2 Deklarisanje pokazivaˇca koji pokazuju na stalno maste je pomalo zbunjuju´ce, recimo: const int broj = 5; Ukazuje da je slede´ca naredba nelegalna (daje greˇsku): broj=8; Po analogiji bi trebalo da deklaracija: const char *ptr="Paja Patak"; deklariˇse pokazivaˇc koji pokazuje uvek na isto mesto u memoriji, ali nije tako! Pravilna deklaracija glasi: char *const ptr="Paja Patak"; /* Pokazivaˇ c na uvek isto mesto */

Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 2/2 Sada je pokazivaˇc konstanta tako da je slede´ca komanda greˇska: ptr=&text; /* Pokazivaˇ c je konstanta ne moˇ ze se menjati */ Ali mesto gde pokazivaˇc pokazuje moˇze da se izmeni: *ptr="Oliva"; /* Ispravna komanda */ Ukoliko ˇzelimo da pokazivaˇc i podaci ne mogu biti izmenjeni deklaracija glasi ovako: const char *const ptr="Popaj"; Prva komanda const kaˇze da lokacija na koju pokazuje pokazivaˇc ne moˇze biti promenjena, a druga const naredba kaˇze da ni pokazivaˇc na lokaciju ne moˇze biti izmenjen! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 2/2 Sada je pokazivaˇc konstanta tako da je slede´ca komanda greˇska: ptr=&text; /* Pokazivaˇ c je konstanta ne moˇ ze se menjati */ Ali mesto gde pokazivaˇc pokazuje moˇze da se izmeni: *ptr="Oliva"; /* Ispravna komanda */ Ukoliko ˇzelimo da pokazivaˇc i podaci ne mogu biti izmenjeni deklaracija glasi ovako: const char *const ptr="Popaj"; Prva komanda const kaˇze da lokacija na koju pokazuje pokazivaˇc ne moˇze biti promenjena, a druga const naredba kaˇze da ni pokazivaˇc na lokaciju ne moˇze biti izmenjen! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 2/2 Sada je pokazivaˇc konstanta tako da je slede´ca komanda greˇska: ptr=&text; /* Pokazivaˇ c je konstanta ne moˇ ze se menjati */ Ali mesto gde pokazivaˇc pokazuje moˇze da se izmeni: *ptr="Oliva"; /* Ispravna komanda */ Ukoliko ˇzelimo da pokazivaˇc i podaci ne mogu biti izmenjeni deklaracija glasi ovako: const char *const ptr="Popaj"; Prva komanda const kaˇze da lokacija na koju pokazuje pokazivaˇc ne moˇze biti promenjena, a druga const naredba kaˇze da ni pokazivaˇc na lokaciju ne moˇze biti izmenjen! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Uvod

struct

typedef

enum

Niz slogova

Unija

Pokazivaˇ ci

const ptr

Konstantni pokazivaˇci– 2/2 Sada je pokazivaˇc konstanta tako da je slede´ca komanda greˇska: ptr=&text; /* Pokazivaˇ c je konstanta ne moˇ ze se menjati */ Ali mesto gde pokazivaˇc pokazuje moˇze da se izmeni: *ptr="Oliva"; /* Ispravna komanda */ Ukoliko ˇzelimo da pokazivaˇc i podaci ne mogu biti izmenjeni deklaracija glasi ovako: const char *const ptr="Popaj"; Prva komanda const kaˇze da lokacija na koju pokazuje pokazivaˇc ne moˇze biti promenjena, a druga const naredba kaˇze da ni pokazivaˇc na lokaciju ne moˇze biti izmenjen! Zlatko Petrovi´ c Sloˇzeni tipovi podataka

Related Documents


More Documents from "Sami Dayekh"