⚙️ C Datenstrukturen & Modularität

C 04: Structs, typedef & Header-Architektur

Strukturiere komplexe Fachdaten mit C-Structs, vereinfache Typnamen mit typedef und lerne saubere modulare Header-Architektur (.h/.c) mit Include-Guards.

🏛️ 1. C-Structs & Modulare Header-Architektur

In hardwarenahen Systemen müssen zusammenhängende Attribute (z.B. Mitarbeiter-ID, Name, Gehalt) in gemeinsamen Speicherblöcken gekapselt werden. In C übernimmt dies das struct. Um Code modular und wartbar zu halten, trennt man Schnittstellen (Header-Dateien .h mit Deklarationen) strikt von der Logik (Quelldateien .c mit Definitionen).

📐 Didaktische Analogie: Datenblatt vs. Fabrikhalle

Die Header-Datei (.h) ist das öffentliche Datenblatt: Sie beschreibt präzise die Anschlüsse, Größen und Befehle eines Bauteils, ohne Firmengeheimnisse zu verraten. Die C-Datei (.c) ist die geschlossene Fabrikhalle: Hier wird das Bauteil tatsächlich gelötet und gefertigt.

⚡ 2. C / C++ Quick-Cheat-Sheet

Syntax / Anweisung Bedeutung & Funktion
typedef struct { ... } TypName;Erzeugt einen Alias-Namen, sodass TypName x; statt struct TypName x; geschrieben werden kann.
ptr->feldSyntaktischer Zucker für (*ptr).feld beim Zugriff über Pointer.
#ifndef HEADER_H
#define HEADER_H
...
#endif
Include-Guard zur Verhinderung von Mehrfachinkludierung und Redefinitionsfehlern.
sizeof(struct Typ)Ermittelt die Speichergröße inklusive compiler-spezifischem Alignment & Padding.

⚠️ 3. Häufige Stolperfallen & Anti-Patterns

⚠️ Struktur-Padding & Memory Alignment

Die Größe eines Structs ist oft größer als die Summe seiner Felder! Der Compiler fügt Leer-Bytes (Padding) ein, um Datentypen an 4- oder 8-Byte-Grenzen für schnellere CPU-Zugriffe auszurichten.

⚠️ Fehlende Include-Guards

Wird derselbe Header über mehrere Abhängigkeiten mehrfach eingebunden, meldet der Compiler fatale 'Redefinition of struct'-Fehler. Verwende immer #ifndef ... #define oder #pragma once.

🧠 Diagnostischer Selbst-Check

Überprüfe dein Verständnis zu Speichersicherheit, Syntax und Systems-Design mit gezieltem Feedback:

🎯 Aufgaben & Checkliste

💻 In Web-IDE öffnen → ← C 03 C++ 05 →