====== Struktura - datový typ struct ====== Jak název napovídá, jedná se o strukturovaný datový typ. Podobně jako v případě [[ccpp:array|pole]] umožňuje pod jedním identifikátorem ukládat různé hodnoty, avšak tentokrát **mohou být jednotlivé položky struktury různých datových typů**. Struktura představuje uživatelem definovaný datový typ. Pro její použití v programu je třeba nejdříve nadeklarovat strukturu samotnou a pak teprve lze vytvářet proměnné tohoto nového typu - takzvané instance. ===== Deklarace struktury ===== Strukturu musíme deklarovat na globální úrovni programové jednotky - stejně jako globální proměnnou, nebo funkci. ==== Obecná deklarace struktury ==== // deklarace struktury struct nazevStruktury { dat_typ nazev_polozky; dat_typ nazev_polozky; ... }; // <-------- POZOR //vytvoření instance nazevStruktury s1; //Pozor na středník za uzavírací složenou závorkou.// ==== Příklad deklarace struktury ==== struct Data { char znak; int pozice; float vaha; }; ===== Inicializace struktury ===== Strukturu můžeme inicializovat po jednotlivých složkách (viz. dále), nebo použitím složených závorek se seznamem hodnot jako v případě definice hodnot v poli. struct Trojce { int a,b,c; }; //Deklarace proměnné včetně inicializace Trojce t = {1, 2, 3}; ===== Přístup k položkám struktury ===== U klasické struktury (tzv. POD) lze přistupovat bez komplikací ke všem vnitřním položkám. K tomu se používá **tečková notace** - za název proměnné typu struct napíšeme ''.'' a pokračujeme názvem vnitřní položky. Např.: #include struct Trojce { int a,b,c; }; int main() { Trojce t; t.a = 4; t.b = 2; t.c = 42; printf("Trojce: [%d, %d, %d]\n", t.a, t.b, t.c); return 0; }