Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou.

Podobné prezentace


Prezentace na téma: "25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou."— Transkript prezentace:

1 25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové typy, spoje- ných pod jediné jméno Struktury pomáhají organizovat „kompliko- vaná“ data Umožňují pracovat se skupinou příbuzných proměnných jako s jedním objektem

2 25/08/20142 Typ struktura (2) Definice typu struktura: struct jmTypu { datový_typ 1 id 11, id 12, …, id 1n 1 ; datový_typ 2 id 21, id 22, …, id 2n 2 ; datový_typ m id m1, id m2, …, id mn m ; }; Identifikátor jmTypu se nazývá jmenovka struktury a lze jej následně využít pro defi- nici proměnných

3 25/08/20143 Typ struktura (3) Proměnné id ij se nazývají složky (položky) struktury Příklad: struct osoba { char jmeno[15], prijmeni[20]; unsigned short vek; }; Na základě definovaného typu struktura je možné později definovat proměnné struct jmTypu p 1, p 2, …, p n ;

4 25/08/20144 Typ struktura (4) Identifikátory p 1, p 2, …, p n označují pro- měnné typu jmTypu Příklad: struct osoba petr, pavel; definuje proměnné petr a pavel, které jsou typu osoba Poznámky: –jmenovka struktury může být v době definice vynechána –za definicí struktury mohou následovat identifi- kátory odpovídajících proměnných

5 25/08/20145 Typ struktura (5) Příklad: struct { char autor[30], nazev[50]; unsigned short rokVydani; } kniha1, kniha2; Složky struktury mohou být v době definice také nastaveny na své iniciální hodnoty Poznámka: –iniciální hodnoty musí být konstantní výrazy

6 25/08/20146 Typ struktura (6) Příklad: struct osoba petr = {”Petr”,”Novak”,30}, pavel = {”Pavel”,”Novy”,40}; Jednotlivé složky struktury lze zpřístupnit pomocí tzv. tečkové notace: –identifikátor proměnné typu struktura –symbol tečka –identifikátor složky struktury

7 25/08/20147 Typ struktura (7) Se složkami typu struktura je možné pracovat stejným způsobem jako s proměnnými odpo- vídajícího datového typu Příklad: strcpy(petr.jmeno,”Petr”); strcpy(petr.prijmeni,”Novak”); petr.vek = 30; Jazyk C umožňuje pracovat najednou s celou strukturou

8 25/08/20148 Typ struktura (8) Lze např. použít přiřazovací příkaz, který zko- píruje obsah jedné struktury do struktury dru- hé (obě proměnné musí být téhož typu): struct bod { int x, y; }; struct bod bod1 = {20, 50}; struct bod bod2; bod2 = bod1;

9 25/08/20149 Typ struktura (9) Struktura může být: –uvedena jako návratová hodnota funkce –předána funkci jako skutečný parametr volaný hodnotou Pozor: –jsou-li definovány dvě struktury se stejnými slož- kami stejných datových typů, pak se chovají jako dva různé nekompatibilní datové typy Poznámka: –složka struktury, jmenovka struktury a proměnná mohou mít stejný identifikátor, aniž by docházelo ke konfliktům

10 25/08/ Typ struktura (10) Struktury je rovněž možné používat v kombi- naci s poli, tj. lze definovat: –struktury, jejichž složky jsou typu pole –pole, jehož prvky jsou typu struktura: příklad: struct bod body[20]; definuje pole body, jehož prvky jsou typu bod a pro jejichž zpřístupnění lze použít např.: body[0].x = 10; body[0].y = 20; Struktury mohou být do sebe vnořovány, tj. složky typu struktura mohou být opět typu struktura

11 25/08/ Typ struktura (11) Příklad: struct obdelnik { struct bod lhRoh, pdRoh; }; struct obdelnik obr; obr.lhRoh.x = 1; obr.lhRoh.y = 1; obr.pdRoh.x = 80; obr.pdRoh.y = 25;

12 25/08/ Pojmenovaný typ (1) Jazyk C poskytuje nástroj pro vytváření jmen datových typů Pojmenované typy lze vytvářet pomocí klí- čového slova typedef Obecný tvar: typedef datový_typ jmTypu; definuje jméno jmTypu jako synonymum pro datový_typ Typ jmTypu lze používat stejným způso- bem jako datový_typ

13 25/08/ Pojmenovaný typ (2) Příklad: typedef unsigned long delka; definuje typ delka, který odpovídá typu unsigned long Typ delka je možné dále využít např. pro definici proměnných Příklad: delka x, y, z; delka delky[10];

14 25/08/ Pojmenovaný typ (3) Příklady: –typedef int * pInt; pInt a, b; definuje proměnné a a b jako ukazatele na hod- noty datového typu int –typedef int matice[2][3]; matice m; definuje proměnnou m jako dvourozměrné pole, které má dva řádky a tři sloupce –typedef int radek[3]; typedef radek matice[2]; matice m; definuje proměnnou m jako dvourozměrné pole, které má dva řádky a tři sloupce

15 25/08/ Pojmenovaný typ (4) Definice pojmenovaných typů se často po- užívá také při definici typů struktura: typedef struct bod { int x, y; } typBod; typedef struct obdelnik { typBod lhRoh, pdRoh; } typObdelnik; typObdelnik obr;

16 25/08/ Typ union (1) Datový typ union umožňuje v různých chví- lích uchovávat hodnoty rozličných typů a velikostí Hodnoty (složky) unionu se vzájemně pře- krývají (sdílí stejné paměťové místo) Uniony umožňují manipulovat s různými typy dat v jedné oblasti paměti Jejich použití bývá méně obvyklé Syntaxe unionu je velmi podobná syntaxi struktury

17 25/08/ Typ union (2) Definice typu union: union jmTypu { datový_typ 1 id 11, id 12, …, id 1n 1 ; datový_typ 2 id 21, id 22, …, id 2n 2 ; datový_typ m id m1, id m2, …, id mn m ; }; Ke složkám unionu se přistupuje rovněž (jako u struktury) pomocí tečkové notace

18 25/08/ Typ union (3) Příklad: union konstanta { char c; int i; double x; }; union konstanta k; Proměnná k obsahuje tři složky ( c, i a x ), které jsou různých typů a sdílejí společné paměťové místo

19 25/08/ Typ union (4) Kapacita paměti, na které jsou uloženy hod- noty typu union, je dána největší složkou, jež je v unionu definována Union neposkytuje informaci o typu prvku, který do něj byl naposledy uložen Zmíněný problém je možné vyřešit tak, že se union vloží do struktury, jejíž: –první složka je výčtový typ –druhá složka je union

20 25/08/ Typ union (5) Příklad: typedef enum {znak,cele,realne} typHodn; typedef struct { typHodn typ; union konstanta hodnota; } typKonstanta; typKonstanta konst;


Stáhnout ppt "25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou."

Podobné prezentace


Reklamy Google