Zusammenfassung
In dieser Lektion hast du gelernt:
- Eine Struktur fasst Werte, die zusammengehören, auch verschiedener Typen, zu einem Ganzen zusammen. Ihre Definition listet ihre Member auf und endet mit
};, das Semikolon eingeschlossen. - Eine Variable eines Strukturtyps legst du mit ihren Werten in geschweiften Klammern an, in der Reihenfolge der Member:
struct produkt brot = {"Brot", 3.5, 2};. - An einen Member kommst du mit einem Punkt,
brot.preis, und verwendest ihn wie eine gewöhnliche Variable. Text wird mitstrcpyin einen Member kopiert, weil man einem Array nicht mit=etwas zuweisen kann. typedef struct { ... } Produkt;gibt dem Typ den NamenProdukt, sodass duProdukt brotschreibst. Dieser Kurs schreibt Strukturen so.- Ein Array von Strukturen,
Produkt warenkorb[3], enthält in jedem Element eine Struktur:warenkorb[i].name. Breiten wie%-8sund%6.2frichten die Spalten einer Tabelle aus. - Ein Member kann ein Array oder eine andere Struktur sein, und du verkettest die Punkte und Klammern:
eva.geburtstag.jahr,eva.punkte[0]. - Eine Struktur, die an eine Funktion übergeben wird, wird kopiert, ebenso eine Struktur, die mit
=zugewiesen wird. Änderungen an der Kopie ändern das Original nicht. Strukturen kann man nicht mit==vergleichen; vergleiche ihre Member. - Über einen Zeiger,
Produkt *artikel, ändert eine Funktion das Original:artikel->anzahlist dasselbe wie(*artikel).anzahl, und du rufst sie mit&milchauf.const Produkt *artikelist für eine Funktion, die nur liest. - Eine Funktion kann eine Struktur zurückgeben und so mehrere Werte auf einmal zurückgeben.
Das war das letzte neue Thema des Kurses. In der nächsten Lektion, dem Abschlussprojekt, schreibst du Schritt für Schritt ein größeres Programm und verwendest alles, was du gelernt hast: Variablen, Bedingungen, Schleifen, Arrays, Zeichenketten, Funktionen, Zeiger und Strukturen.
Aber zuerst übe Strukturen an einer kleinen Aufgabe: einer Leseliste.
So schreibst du es:
Anweisungen
- 1
Definiere über
mainmittypedefeine StrukturBuchmit drei Membern: dem Titeltitel(ein Array aus 30 Zeichen) und zwei Ganzzahlen, der Seitenzahlseitenund der Anzahl der Seiten, die du schon gelesen hast,seiten_gelesen. Lege inmainein Arraybuechermit drei Büchern an:Der Hobbitmit 310 Seiten, davon 120 gelesen;Matildamit 240 Seiten, keine gelesen; undMomomit 300 Seiten, alle gelesen. Gib die Bücher dann mit einer Schleife aus, eins pro Zeile, alsDer Hobbit: 120/310. - 2
Schreibe zwischen der Struktur und
maineine Funktionvoid seiten_lesen(Buch *buch, int anzahl), dieanzahlzu denseiten_gelesendes Buchs addiert, aber nie mehr Seiten, als das Buch hat: Wenn das Ergebnis größer alsseitenist, setzt sieseiten_gelesenaufseiten. Rufe sie inmainvor der Schleife zweimal auf:seiten_lesen(&buecher[0], 250)undseiten_lesen(&buecher[1], 35). Das Programm gibt dannDer Hobbit: 310/310,Matilda: 35/240undMomo: 300/300aus.