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