1 / 12

2 . Strukture , unije i polja bitova Potreba za podacima mešovitog tipa.

struct. ime. ;. }. {. deklaracija. 2 . Strukture , unije i polja bitova Potreba za podacima mešovitog tipa. Sintaksa strukture u C-u :. struct ime { tip komponenta1; tip komponenta2; ………… };. Primer: Ako defini š emo strukturu: struct ucenik { char ime[30];

marlon
Download Presentation

2 . Strukture , unije i polja bitova Potreba za podacima mešovitog tipa.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. struct ime ; } { deklaracija 2. Strukture, unije i polja bitova Potreba za podacima mešovitog tipa. Sintaksa strukture u C-u: struct ime { tip komponenta1; tip komponenta2; ………… };

  2. Primer: Ako definišemo strukturu: struct ucenik { char ime[30]; char skola[40]; int razred; }; koristimo je u deklariciji promenljivih (kao i svaki tip podataka): int m, k; struct ucenik prvi, drugi; Jedina operacija definisana nad promenljivima strukturnog tipa je operacija dodele, koja se primenjuje samo na promenljive istog struktirnog tipa. Dakle, (za pethodnu deklarciju) možemo pisati: prvi =drugi;

  3. Može se izvršiti i deklaracija na sledeći način: struct ucenik { char ime[30]; char skola[40]; int razred; } ucenik1, ucenik2; Promenljiva strukturng tpa može se inicijalizovati. Tako, možemo pisati: struct ucenik prvi = { “Petra Peric”, “Mat. gimnazija”, 3 };

  4. 2.1. Pristup komponentama strukture Za pristup komponentama strukture koristi se “tačka –notacija”. Komponetama se pristupa preko imena strukture i imena komponente, s tim što se ime strukture razdvaja od imena komponente tačkom. Dakle, pišemo: <ime strukturne promenljive>.<ime komponente> Sa komponentama strukture operiše se kao i sa drugim promenljivim veličinama. Ako smo deklarisa promenljive prvi i drugi da budu tipa ucenik, možemo pisati: prvi.ime = “Ana Stanic”; x= drugi.razred+1; drugi.skola = “Mat. gimnazija”; Djak1.cpp

  5. Kao tip unutar strukture može se pojaviti ma koji tip pa i drugi strukturni tip. Primer 1:Primer 2: struct naziv { struct tacka { char ime[20]; int x; char prezime[20]; int y; } } struct profa{ struct duz{ struct naziv imep; struct tacka pocetna; char predmet[30]; struct tacka krajnja; int godina; }; }; Sada možemo pisati: struct duz prva; duz.cpp prva.pocetna.x=3; duz1.cpp prva.pocetna.y=4;

  6. 2.2. Strukture i pokazivači Strukturne promenljive imaju svoje adrese pa ima smisla koristiti pokazivače. Pokazivači se koriste na isti način kao i sa drugim tipovima podataka: da bi pokazivač ukazivao na strukturni tip podatka, mora biti deklarisan kao strukturni. Dakle, ima smisla pisati: struct ucenik *djak; Komponentama strukture sada pristupamo preko pokazivača na sledeći način: (*djak).ime, (*djak).skola, (*djak).razred. Ako koristimo pokazivače, komponentama strukture, možemo pristupiti i korišćenjem operatora . Dakle, možemo pisati: djak ime djak skola djak razred. Autorstr.cpp AutoStr1.cpp

  7. union ime ; } { deklaracija 2.3. Unije Unija je slična strukturi po načinu deklarisanja. Sintaksa unije u C-u je: union ime { tip komponenta1; tip komponenta2; ………… }; Svi elementi unije koriste isti memorijski prostor. U jednom trenutku semože koristiti samo jedan element unije.

  8. Primer: Ako definišemo uniju: union prva { int i; float f; double d; }; tada imaju smisla deklaracije: union prva au; union prva niz]10]; union prva *pok; Niz unija podataka često se koristi za čuvanje različiih tipova poadataka koji su svi iste dužine.Redosled podataka ne mora biti pravilan, niti poznat unapred. int float doule

  9. Podacima u uniji se pristupa na isti način kao i podacima u strukturi. Može se izvršiti inicijalizacija promenljive tipa unije. Inicijjalizacija se može izvršiti dodeljivanjem druge unije istog tipa ili samo inicijalizacijom prvog podatka u uniji. Na primer, za prethodno definisanu uniju možemo pisati: union prva pomA; pomA.i = 34; ili union prva pomB = pomA; Podacima pristupamo kao i kod struktura. Na primer: union prva pod; pod.i=23; x= pod.d; I ovde se može koristiti operator  ako se koriste pokazivači. Ne može se koristiti sekveca: pod.i =2; x= 22.3*pod.f;

  10. 2.4. Polje bitova (niz bitova) U C-u ne postoji mogućnost rada sa bitovima direktno. Rad sa bitovima može se relizovat posredno, preko struktura. Tako možemo pisati: struct ime_strukture { [unsigned int <ime polja>] : <duzina_polja>; [unsigned int <ime polja>] : <duzina_polja>; ………. } Preko duzine_polja određujemo koliko će bitova biti rezervisano za svaki podatak u strukturi.

  11. Dakle, ima smisla pisati: struct mem_linija { unsigned int poo: 1; unsigned int datum: 4: unsigned int ind: 1; unsigned int sadrzaj: 2; } registar; Pristup ovim podacima vrši sena uobičajen način, tj. kao i drugim elementima strukture: registar.ind=1; x= registra.poo;

  12. 2.5. typedef-specifikator Specifikator typedef služi za predefinisanje tipova podataka. Upotrebljava se u obliku (već je opisan ranije): typedef <stari_tip> <novi_tip> Na primer, možemo pisati: typedef int ceo; a potom vršiti deklaraciju na sledeći način: ceo pera, i , sat; typedef je koristan kod rada sa strukturama i unijama. Tako možemo pisati: typedef struct { float x; float y; } tacka; Zatim možemo deklarisati promenljive na sledeći način: tacka t1,t2, *pt;

More Related