Programmieren in C

Strukturierte Datentypen II

Vorhin haben wir uns mit dem Anlegen stukturierter Datenstrukturen beschäftigt. Nun wollen wir mit ihnen auch arbeiten. In diesem Beitrag zeigen wir dir wie du dabei vorgehst.

Nutzung strukturierter Datentypen

Im letzten Video hast du ja bereits gelernt, wie du strukturierte Datentypen definierst. Nun wollen wir sie aber auch nutzen können. Deswegen fangen wir gleich mit diesem Codebeispiel an.

Strukturierte Datentypen
Codebeispiel Produktliste

Hier sehen wir einige, bereits definierte neue Typen. Was uns dabei auffällt ist, dass sie alle etwas anders formuliert sind, als die, die du bis jetzt gesehen hast. Das hat aber einen ganz bestimmten Zweck.

Definition mit typedef

Wenn wir die Definition ohne typedef durchführen, ist es nämlich umständlicher, „Objekte“ dieses Typs zu deklarieren. Das liegt daran, dass du dann ein Objekt so definieren musst:

struct product popcorn = {1, „Popcorn“, 2.50, 9};

Haben wir typedef aber verwendet, verkürzt sich diese Anweisung zu:

Strukturierte Datentypen
typedef erspart viel Schreibarbeit

Das scheint jetzt nicht viel Ersparnis zu sein, jedoch macht es eine ganze Menge an Schreibarbeit aus, wenn du z. B. 50 Arbeitgeber anlegen oder ein ganzes Sortiment im Supermarkt generieren musst.

Deklarierung und Initialisierung der Datenstruktur

Genau das machen wir jetzt, wenn auch im kleineren Umfang. Als Erstes erstellen wir uns ein Testprodukt „Popcorn“, das wir ganz einfach deklarieren und initialisieren können wie ein Array. Dabei steht jeder Wert für eine Komponente der Struktur. Es wird also automatisch die Eins der Produktnummer zugeordnet, der eingegebene String dem Namen und so weiter.

Strukturierte Datentypen
Erstellung des Testprodukts

Du musst Strukturen aber nicht gleich initialisieren. Du kannst sie auch einfach nur in Existenz bringen, wie du in der zweiten Zeile bereits sehen kannst.

Besonderheit beim Datentyp storage

Bei unserem dritten Strukturtypen wird das Ganze etwas interessanter: Wenn du genauer hinschaust, siehst du, dass in der Definition der Struktur storage eine Komponente angegeben ist, die uns etwas stutzig macht.

Strukturierte Datentypen
Strukturtyp storage

Ein Objekt vom Typ storage kann nämlich ein Objekt vom Typ Produkt enthalten. Das ist im echten Leben für uns selbstverständlich. Natürlich werden Produkte im Lagerraum abgelegt! Aber hier im Code ist es etwas Besonderes. Normalerweise werden solche Strukturen entweder static oder global deklariert. Das liegt daran, dass sie, wenn sie ganze Listen von anderen Datentypen enthalten, extrem groß werden und dadurch unter Umständen zu einem Stack-Overflow führen können.

Strukturierte Datentypen
Deklarierung als static oder global

Zugriff auf die Strukturkomponenten

Nun, da das geklärt ist, können wir unser Popcorn ja einlagern. Wie kommen wir jetzt aber an unsere abgespeicherten Werte ran? Das ist ganz einfach. Weißt du noch, wie du in Java Objekte angesprochen hast? Genauso machen wir es hier. Das heißt, wir nehmen unser basement-Objekt und hängen einen Punkt, gefolgt von unserem gewünschten Attribut an. Auf diese Weise kannst du Komponenten einer Struktur neue Werte zuweisen, diese manipulieren und ausgeben.

Strukturierte Datentypen
Neue Wertzuweisung auf die basement-Komponente

Dabei können diese „Punkt-Ketten“ ziemlich lang werden, wie du hier siehst. Dennoch funktioniert eine solche Ausgabe und das ist ziemlich praktisch, sollte zum Beispiel ein Mitarbeiter einmal prüfen wollen, was und wie viel noch im Lager vorhanden ist, kann er nachsehen ohne in den Keller laufen zu müssen.

Jetzt weißt du nicht nur wie du diese strukturierten Datentypen definierst, sondern auch wie du sie anwendest. Leg am besten gleich los und probiere es einmal aus!

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.