1 / 20

Typ struktura (1)

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

tass
Download Presentation

Typ struktura (1)

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. 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. Typ struktura (2) • Definice typu struktura:struct jmTypu{ datový_typ1 id11,id12,…,id1n1;datový_typ2 id21,id22,…,id2n2; datový_typm idm1,idm2,…,idmnm;}; • Identifikátor jmTypu se nazývá jmenovka struktury a lze jej následně využít pro defi-nici proměnných

  3. Typ struktura (3) • Proměnné idij 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 p1,p2,…,pn;

  4. Typ struktura (4) • Identifikátory p1,p2,…,pn 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. 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. Typ struktura (6) • Příklad: struct osobapetr={”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. 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. 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. 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. 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];definujepole body, jehož prvky jsou typu boda 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. 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. 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:typedefdatový_typ jmTypu;definuje jméno jmTypu jako synonymum pro datový_typ • TypjmTypu lze používat stejným způso-bem jako datový_typ

  13. 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. 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. 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. 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. Typ union (2) • Definice typu union:union jmTypu{ datový_typ1 id11,id12,…,id1n1;datový_typ2 id21,id22,…,id2n2; datový_typm idm1,idm2,…,idmnm;}; • Ke složkám unionu se přistupuje rovněž (jako u struktury) pomocí tečkové notace

  18. Typ union (3) • Příklad:union konstanta{char c;int i;double x;};unionkonstanta 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. 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. Typ union (5) • Příklad:typedefenum {znak,cele,realne} typHodn;typedef struct{ typHodn typ;unionkonstanta hodnota;} typKonstanta;typKonstanta konst;

More Related