Was ist Struct (C-Struktur)?
Mechanismus in C, der mehrere Werte unterschiedlichen Typs (Member) zusammenfasst und als einen Typ behandelt. Definiert wird sie etwa als struct sensor { int id; float value; };; die Member einer Variablen s werden mit s.id angesprochen, über einen Zeiger p auf die Struktur mit p->id. Die Member liegen in der Reihenfolge ihrer Deklaration im Speicher, doch wegen der Ausrichtung (Alignment) können Füllbytes (Padding) dazwischen liegen, sodass die Gesamtgröße die Summe der Membergrößen übersteigen kann.
Japanische Bezeichnung: 構造体
„Struct (C-Struktur)“ kommt in 2 Übungsfragen aus 1 Themen vor, z. B. Grundlagen der Programmiersprache C.
Fachgebiet: Grundlagen der Programmiersprache C
Häufige Fragen
Was ist der Unterschied zwischen einer Struktur und einem Array?
Ein Array reiht Elemente desselben Typs aneinander, und Elemente werden über einen Index ausgewählt. Eine Struktur fasst Member unterschiedlichen Typs zusammen, und Member werden über ihren Namen ausgewählt. Beides lässt sich kombinieren, etwa als Array von Strukturen oder als Struktur mit einem Array als Member.
Warum sollte man die Größe einer Struktur mit sizeof ermitteln?
Wie viel Padding zwischen den Membern und am Ende eingefügt wird, hängt von den Typgrößen und den Alignment-Regeln (ABI) ab; die Summe der Membergrößen ergibt daher nicht die richtige Größe. Wird Speicher für eine Struktur mit malloc reserviert oder eine Struktur in eine Datei geschrieben, ermittelt man die tatsächliche Größe mit sizeof(struct Name).