Fortgeschrittene Algorithmen und Programmierung in C
Wie kann man zusammengehörige Daten gruppieren?
Stellen Sie sich vor, Sie möchten Informationen über eine Person speichern:
Mit einer Struktur fassen wir alles zusammen:
Eine Struktur (struct) ist ein benutzerdefinierter Datentyp, der mehrere Variablen unterschiedlichen Typs zu einer logischen Einheit zusammenfasst.
Wichtige Begriffe:
struct Person)name, alter, groesse)person1)So definiert man eine Struktur in C:
⚠️ Wichtig: Das Semikolon nach der schließenden Klammer nicht vergessen!
Struktur-Definitionen stehen vor der main()-Funktion:
Die Struktur muss bekannt sein, bevor wir sie verwenden.
struct Person ist der Typ-Name (wie int), person1 ist der Variablen-Name.
Speicher-Layout von person1:
→ Gesamt: ca. 62 Bytes
Alle Daten liegen direkt hintereinander im Speicher!
Der Punkt-Operator (.) greift auf Komponenten zu:
Wird gelesen als: "die Komponente X der Variable Y"
Arrays können nicht direkt mit = zugewiesen werden. Nutzen Sie strcpy()!
Strukturen können direkt initialisiert werden:
Fehlende Werte werden automatisch mit 0 bzw. "" initialisiert.
Ohne Initialisierung: Zufallswerte! Nutzen Sie = {0}.
Bei Strings: kein &. Bei int/double: mit &.
Komplette Strukturen können mit = kopiert werden:
C kopiert automatisch alle Komponenten!
Die Zuweisung erstellt eine Kopie:
Die Variablen sind unabhängig voneinander!
C weiß nicht, wie Strukturen zu vergleichen sind. Vergleichen Sie die Komponenten einzeln!
Erstellen Sie eine Struktur Auto mit: marke (String), modell (String), baujahr (int), preis (double). Füllen Sie sie mit Daten und geben Sie alles aus.
struct Auto Definition muss vor main() stehen#include <string.h> ist nötig, und wir verwenden strcpy() für marke und modellbaujahr und preis können direkt mit = zugewiesen werden%s für Strings, %d für int, %.2f für double mit 2 DezimalstellenErstellen Sie eine Struktur Adresse mit: strasse (String), hausnummer (int), plz (int), stadt (String). Lesen Sie die Daten vom Benutzer mit scanf() ein und geben Sie sie formatiert aus.
scanf("%s", adresse.strasse) - OHNE &
scanf("%d", &adresse.hausnummer) - MIT &
Häufiger Fehler: scanf("%s", &adresse.strasse) ist FALSCH!
Erstellen Sie eine Struktur Produkt mit: name (String) und preis (double). Erstellen Sie p1 mit beliebigen Werten. Kopieren Sie p1 nach p2. Erhöhen Sie den Preis von p2 um 10%. Geben Sie beide aus und zeigen Sie, dass p1 unverändert bleibt.
struct Produkt p2 = p1;
p2.preis = p2.preis * 1.1; ändert nur p2Nächste Schritte: Üben Sie selbst mit eigenen Strukturen! Probieren Sie verschiedene Datentypen aus.
struct definieren=Kernkonzept: Strukturen gruppieren zusammengehörige Daten!
Üben Sie mit den drei Übungsaufgaben.
Probieren Sie eigene Strukturen aus!
Vorlesung 9 behandelt fortgeschrittene Themen
(Arrays von Strukturen, Funktionen, Zeiger)