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};
| ^
| structHláš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.
Jak psát:
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
3/9