typedef
Jedes Mal struct produkt zu schreiben, wenn du eine Variable anlegst, ist viel Tipparbeit. Und wenn du das Wort struct vergisst, wie in produkt brot = {"Brot", 3.5, 2};, lässt sich das Programm nicht kompilieren:
main.c:10:5: error: must use 'struct' tag to refer to type 'produkt'
10 | produkt brot = {"Brot", 3.5, 2};
| ^
| structIn C funktioniert der Name einer Struktur nur zusammen mit dem Wort struct. Mit dem Schlüsselwort typedef (kurz für type definition, Typdefinition) kannst du dem Typ einen eigenen Namen geben. Schreibe typedef vor struct und den neuen Namen hinter die schließende geschweifte Klammer:
typedef struct {
char name[20];
double preis;
int anzahl;
} Produkt;Jetzt heißt der Typ einfach Produkt, und du legst seine Variablen so an, wie du int-Variablen anlegst:
Produkt brot = {"Brot", 3.5, 2};
Produkt milch = {"Milch", 1.2, 3};Der Name hinter struct wird nicht mehr gebraucht: Die Struktur hat jetzt durch typedef den Namen Produkt. Viele Programmierer beginnen die Namen von Typen mit einem Großbuchstaben, um sie von Variablen zu unterscheiden, und das tut auch dieser Kurs: Produkt ist ein Typ, brot und milch sind Variablen. Vergiss das Semikolon nach dem neuen Namen nicht.
Ab jetzt schreibt dieser Kurs Strukturen mit typedef. In anderen Programmen siehst du beide Formen, und manchmal sind sie kombiniert: Nach typedef struct produkt { ... } Produkt; funktionieren sowohl struct produkt als auch Produkt.
Achte auf eins: Eine so mit typedef definierte Struktur hat hinter struct keinen Namen, also funktioniert struct Produkt brot nicht. Der Fehler ist nicht sehr klar:
main.c:10:20: error: variable has incomplete type 'struct Produkt'
10 | struct Produkt brot = {"Brot", 3.5, 2};
| ^Ein incomplete type (unvollständiger Typ) ist ein Typ, den der Compiler nur dem Namen nach kennt, ohne seine Member. Wegen des Worts struct sucht er eine Struktur namens struct Produkt, und es gibt keine. Lass das struct weg und schreibe nur Produkt brot.
So schreibst du es:
Anweisungen
- 1
Schreibe die Struktur mit
typedefso um, dass der TypLiedheißt, und lege beide Variablen alsLiedan. Das Programm gibt dieselben beiden Zeilen aus wie vorher. - 2
Lege unter der Variablen
zweitesein drittes Lieddrittesvom TypLiedan, mit dem TitelLetzter Bus nach Hauseund der Länge251Sekunden. Gib es auf dieselbe Weise unter den anderen beiden aus. Die letzte Zeile istLetzter Bus nach Hause: 4 min 11 s.