Video

Bei der Programmierung in C stößt du oftmals an deine Grenzen, wenn du dich bei den Unmengen an Datensätzen und Variablen zurechtfinden musst? Hier zeigen wir dir wie du mithilfe strukturierter Datentypen Ordnung in das Datenchaos bekommst!

Inhaltsübersicht

Zusammensetzung aus einzelnen primitiven Typen

Strukturierte Datentypen können dir das Leben stark vereinfachen, denn sie gehen über primitive Datentypen hinaus. Genauer gesagt setzen sie sich aus mehreren individuellen Elementen dieser primitiven Typen zusammen. Das ist enorm praktisch, da es dir die Kreation eigener Typen aus diesen Zutaten ermöglicht.

Strukturierte Datentypen, primitive Datentypen
direkt ins Video springen
Zusammensetzung aus primitiven Datentypen

Erstellung eines strukturierten Datentyps

Um einen strukturierten Datentyp zu erstellen, reihen wir einige Variablen verschiedener, primitiver Datentypen aneinander. Die Gesamtlänge des so entstandenen Gebildes entspricht dann der Summe der Länge der einzelnen Bestandteile. Verwendet werden solche Gebilde vor allem für zusammengehörige Datensätze wie zum Beispiel für alle Daten eines Mitarbeiters einer Firma oder alle Eigenschaften eines Produkts im Supermarkt. In anderen Programmiersprachen bezeichnet man diese Strukturen auch als „Records“.

Strukturierte Datentypen, primitive Datentypen
direkt ins Video springen
Records sind Gebilde zusammengehöriger Datensätze
Studyflix vernetzt: Hier ein Video aus einem anderen Bereich

Anwendung strukturierte Datentypen

Aber warum solltest du sie verwenden? Die Organisation und das Zusammenfassen von Werten unter einem Konstrukt vereinfacht die Pflege und Bearbeitung von Code ungemein. Denn du kommst mit sehr viel weniger individuellen Variablen aus. Damit reduzierst du das Chaos auf ein Minimum. Gleichzeitig vereinfachst du die Anpassung der Attribute eines solchen, selbst definierten Typs.

Strukturierte Datentypen, primitive Datentypen
direkt ins Video springen
Man kommt mit weniger individuellen Variablen aus

Deklarieren von eigenen Typen

Die Deklaration deiner eigenen Typen kann auf verschiedene Weisen erfolgen. Alle diese Methoden verwenden aber den struct-Befehl. Dieser Befehl ist wahlweise gefolgt von einem Namen für den zu deklarierenden Typ. Diese werden in Fachsprache auch tags genannt. Danach folgen in geschweiften Klammern die gewünschten, zu umfassenden Variablen.

Strukturierte Datentypen, primitive Datentypen
direkt ins Video springen
Deklaration eines eigenen Datentyps

Wenn du das Objekt eines solchen Typs dann abspeicherst, kann es dazu kommen, dass der tatsächliche Speicherbedarf für die Struktur höher ausfällt, als berechnet. Das liegt daran, dass der Compiler automatisch dafür sorgt, dass alle Bestandteile dieses Konstrukts an der bestmöglichen Stelle beginnen. Das hat meist keine Auswirkungen auf dein Programm, also kannst du es getrost ignorieren. Solltest du jedoch einmal die konkrete Größe eines solchen Typs benötigen, kannst du sie problemlos mittels des sizeof Befehls ermitteln.

Strukturierte Datentypen, primitive Datentypen
direkt ins Video springen
Mit sizeof kannst du die Größe eines bestimmten Typs abrufen

Innerhalb der Struktur selbst wird jede einzelne Variable ganz normal deklariert, jedoch kannst du keine Speicherklasse für sie angeben. Das heißt: Du kannst sie zum Beispiel nicht als static deklarieren. Außerdem ist es dir nicht möglich, innerhalb der Struktur diese Variablen zu initialisieren.

Jetzt weißt du, wie du die Schablone für deine eigenen Strukturen erstellst. Im nächsten Video zeigen wir dir dann, wie du sie nutzen kannst.

Strukturierte Datentypen I — häufigste Fragen

(ausklappen)
  • Was ist der Unterschied zwischen einer struct-Definition und einer Variable dieses struct-Typs?
    Eine struct-Definition legt nur fest, aus welchen Feldern der neue Datentyp besteht (die „Schablone“), speichert aber noch keine konkreten Werte. Eine Variable dieses struct-Typs ist dann eine konkrete Instanz mit reserviertem Speicher, in die die Feldwerte geschrieben und aus der sie gelesen werden.
  • Wie greift man in C auf einzelne Felder einer struct zu?
    Auf ein Feld einer struct greift man mit dem Punkt-Operator zu, also structVariable.feldname. Liegt statt einer Variable ein Zeiger auf eine struct vor, verwendet man den Pfeil-Operator, also structZeiger->feldname, um das gewünschte Feld anzusprechen.
  • Wozu dient der Name hinter struct?
    Der Name hinter struct dient als Typname (Tag), mit dem man den struct-Typ später wieder referenzieren kann. Dadurch kann man Variablen dieses Typs deklarieren, ohne die Felder jedes Mal erneut hinschreiben zu müssen, zum Beispiel struct Mitarbeiter m;.
  • Wie initialisiert man die Werte einer struct, wenn das nicht direkt in der struct-Definition geht?
    Die Werte einer struct initialisiert man bei der Variablendeklaration oder danach, indem man die Felder setzt. Typisch ist eine Initialisierung bei der Deklaration mit einer Initializer-Liste wie struct Punkt p = {1, 2}; oder das anschließende Setzen einzelner Felder wie p.x = 1;.

Nach Beantwortung speichern wir deine Antwort, um Studyflix zu verbessern. Mehr dazu erfährst du in unserer Datenschutzerklärung.

Datenstrukturen verstehen

Strukturierte Datentypen mit struct sind ein typisches Werkzeug aus dem Bereich Datenstrukturen in der Programmierung. Du legst Daten so ab, dass zusammengehörige Werte als Einheit im Code stehen und sich gut weiterverarbeiten lassen. So erkennst du schneller, welche Informationen zu einem Objekt gehören und wie du sie sauber im Programm übergibst und speicherst. Weitere Videos dazu findest du in unserem Informatikbereich.

Lernen lohnt sich! Entdecke hier deine Chancen.