Strukturen und Vereinigungen
Strukturen (struct) und Vereinigungen (union) ermöglichen die Zusammenfassung von Variablen verschiedener Typen unter einem Namen.
Sie sind zentral für komplexe Datentypen in C.
1. Strukturen (struct)
Eine Struktur fasst verschiedene Datentypen zu einem neuen Typ zusammen.
struct Punkt {
int x;
int y;
};
struct Punkt p1;
p1.x = 10;
p1.y = 20;
printf("(%d,%d)\n", p1.x, p1.y);
Strukturen ermöglichen **logische Gruppierung** zusammenhängender Daten.
2. Initialisierung von Strukturen
Strukturen können bei der Deklaration initialisiert werden.
struct Punkt p2 = {5, 15};
printf("(%d,%d)\n", p2.x, p2.y);
3. Zugriff auf Strukturelemente
Zugriff auf Elemente erfolgt über den Punktoperator ..
p2.x = p2.x + 1;
printf("%d\n", p2.x);
4. Zeiger auf Strukturen
Zeiger auf Strukturen nutzen den Pfeiloperator -> zur Dereferenzierung.
struct Punkt *pp = &p2;
pp->y = 30;
printf("%d\n", pp->y);
5. Vereinigungen (union)
Eine Union speichert verschiedene Typen an derselben Speicherstelle.
Es kann immer nur **ein Wert** gleichzeitig gültig sein.
union Zahl {
int i;
float f;
};
union Zahl z;
z.i = 42;
printf("%d\n", z.i);
z.f = 3.14;
printf("%f\n", z.f); // vorheriges int wird überschrieben
6. Vorteile und typische Anwendungen
- Struct: komplexe Daten zusammenfassen (z.B. Punkt, Datum, Student)
- Union: Speicher sparen, nur ein Typ wird zu einem Zeitpunkt verwendet
- In Kombination mit Arrays und Zeigern sehr mächtig
7. Zusammenfassung
- Strukturen fassen mehrere Datentypen logisch zusammen
- Zeiger auf Strukturen verwenden
->
- Unions teilen denselben Speicher für verschiedene Typen
- Strukturen und Unions sind Basis für komplexe Datentypen in C