Hledejte v chronologicky řazené databázi studijních materiálů (starší / novější příspěvky).

15. Struktury, jejich deklarace, složky, operátor přímé a nepřímé kvalifikace.

Struktura, deklarace struktury:
Typ struktura patří mezi tzv. složené datové typy. Struktura je vlastně jakýsi obal, který sdružuje více položek různých typů do jednoho celku.

Příklad:

struct { char jmeno[200];
unsigned char vek;
float vyska;
};

Klíčovým slovem struct uvozujeme vlastní deklaraci těla struktury. To je tvořeno dvojicí složených závorek, mezi kterými jsou deklarovány jednotlivé položky struktury tak, jako bychom definovali proměnné.

Nyní tedy máme nadeklarovanou strukturu, ale nemáme žádnou proměnnou, jejímž typem by tato struktura byla. Chceme-li tedy nějakou takovou proměnnou definovat, uděláme to stejně jako u ostatních datových typů - zápisem, kdy před identifikátor proměnné uvedeme její typ.

Příklad:

struct { char jmeno[200];
unsigned char vek;
float vyska;
} clovek; //Přibyla definice proměnné člověk

Pokud bychom chtěli definovat více proměnných, jednoduše uvedeme více identifikátorů navzájem oddělených čárkou. Jestliže ale budeme chtít vytvořit proměnnou stejného typu na jiném místě programu, musíme samotnou strukturu označit identifikátorem, který uvedeme mezi klíčovým slovem struct a vlastním tělem struktury.

Příklad:

struct osoba { char jmeno[200];
unsigned char vek;
float vyska;
};

Nyní ale, díky označení struktury jejím identifikátorem, můžeme proměnnou „clovek“ definovat i na jiných místech programu takto:

osoba clovek;

Složky:
Snad jen, že to můžou být jakékoliv typy proměnných a dokonce i jiná struktura.

Operátor přímé a nepřímé kvalifikace:
Operátory přímé a nepřímé kvalifikace jsou operátory pomocí nichž pracujeme se strukturou, neboli pracujeme s jednotlivými položkami struktury. Jsou to operátory tečka . a šipka ->. Operátor tečka je tzv. operátor přímé kvalifikace. Pomocí něj se přistupuje k jednotlivým položkám struktury. Například pokud bychom chtěli položce ulice v proměnné bydliste přiřadit řetězec Jecna uděláme to takto: bydliste.ulice = “Jecna”;. Operátor šipka je tzv. operátor nepřímé kvalifikace. Použijeme ho tehdy když chceme k položce ve struktuře přistupovat pomocí ukazatele. Např. pokud chceme přiřadit položce mesto proměnné bydliste řetězec Praha pomocí ukazatele *pbydliste, uděláme to takto:

pbydliste = &bydliste;
pbydliste->mesto = “Praha”;

Nejprve musíme ukazateli pbydliste přiřadit adresu proměnné bydliste a poté pomocí operátoru šipky naplnit její položku. Použití operátoru nepřímé kvalifikace nahrazuje toto:

(*pbydliste).mesto

Žádné komentáře:

Okomentovat