====== 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;
}