typedef

Psát struct produkt pokaždé, když vytváříte proměnnou, je zdlouhavé. A když slovo struct zapomenete, například produkt chleba = {"Chléb", 32.5, 2};, program se nepřeloží:

main.c:10:5: error: must use 'struct' tag to refer to type 'produkt'
   10 |     produkt chleba = {"Chléb", 32.5, 2};
      |     ^
      |     struct

Hláška říká, že k typu produkt musíte napsat struct: v C funguje název struktury jen spolu s tímto slovem. Pomocí klíčového slova typedef (z anglického type definition, definice typu) ale můžete datovému typu dát vlastní název. Napište typedef před struct a nový název za zavírací složenou závorku:

typedef struct {
    char nazev[20];
    double cena;
    int pocet;
} Produkt;

Datový typ se teď jmenuje prostě Produkt a jeho proměnné vytváříte stejně jako proměnné typu int:

Produkt chleba = {"Chléb", 32.5, 2};
Produkt mleko = {"Mléko", 24.9, 3};

Název za struct už není potřeba: struktura má teď název Produkt z typedef. Mnoho programátorů píše názvy datových typů s velkým počátečním písmenem, aby je odlišili od proměnných, a tak to dělá i tento kurz: Produkt je datový typ, chleba a mleko jsou proměnné. Nezapomeňte na středník za novým názvem.

Odteď budeme v kurzu psát struktury s typedef. V jiných programech uvidíte oba zápisy a někdy i jejich spojení: po typedef struct produkt { ... } Produkt; funguje struct produkt i Produkt.

Pozor na jednu věc: struktura definovaná pomocí typedef tímto způsobem nemá za slovem struct žádný název, a tak struct Produkt chleba nefunguje. Chybová hláška není moc srozumitelná:

main.c:10:20: error: variable has incomplete type 'struct Produkt'
   10 |     struct Produkt chleba = {"Chléb", 32.5, 2};
      |                    ^

Incomplete type (neúplný typ) je datový typ, který překladač zná jen podle názvu, bez jeho členů. Kvůli slovu struct hledá strukturu s názvem struct Produkt a žádnou takovou nenajde. Slovo struct vynechejte a napište jen Produkt chleba.

Pokyny

Přepište strukturu pomocí typedef tak, aby se datový typ jmenoval Pisen, a obě proměnné vytvořte jako Pisen. Program vypíše stejné dva řádky jako předtím.

Pod proměnnou druha vytvořte třetí píseň treti typu Pisen s názvem Poslední autobus a délkou 251 sekund. Vypište ji stejně jako ostatní, pod ně. Poslední řádek bude Poslední autobus: 4 min 11 s.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

3/9