Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Verschachtelte Strukturen | Erweiterte Struct-Verwendung
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C-Strukturen Meistern

bookVerschachtelte Strukturen

In C können Strukturen andere Strukturen als Mitglieder enthalten, zusätzlich zu Basistypen wie int oder char, Arrays und Zeigern. Verschachtelte Strukturen sind nützlich, wenn zusammengehörige Daten logisch gruppiert werden sollen.

Eingebettete verschachtelte Struktur

Eine eingebettete verschachtelte Struktur wird direkt innerhalb der äußeren Struktur deklariert. Das bedeutet, dass die verschachtelte Struktur nur innerhalb der äußeren Struktur existiert und nicht anderweitig verwendet werden kann.

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> struct Person { char name[50]; int age; struct Address { char street[50]; char city[50]; char index[10]; } address; // embedded nested structure }; int main() { struct Person person = { "Sherlock Holmes", 27, {"Baker Street", "London", "221B"} }; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }

In diesem Beispiel wird die Struktur Address innerhalb von Person definiert, sodass sie nur im Kontext der Struktur Person existiert. Auf die Felder der verschachtelten Struktur kann mit person.address zugegriffen werden, wodurch Sie street, city und index abrufen können. Dieser Ansatz ist praktisch, wenn die verschachtelten Daten spezifisch für eine einzelne äußere Struktur sind und nicht an anderer Stelle wiederverwendet werden müssen.

Separate verschachtelte Struktur

Eine separate verschachtelte Struktur wird unabhängig deklariert und anschließend in die äußere Struktur eingebunden. Dadurch kann die verschachtelte Struktur in mehreren äußeren Strukturen wiederverwendet oder separat instanziiert werden.

main.c

main.c

copy
123456789101112131415161718192021222324
#include <stdio.h> struct Address { char street[50]; char city[50]; char index[10]; }; struct Person { char name[50]; int age; struct Address address; // nested structure }; int main() { struct Address addr = {"Baker Street", "London", "221B"}; struct Person person = {"Sherlock Holmes", 27, addr}; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }

Hier wird Address unabhängig von Person deklariert, sodass es eigenständig oder in mehreren Strukturen verwendet werden kann. Beim Initialisieren einer Person wird eine Address-Instanz dem Feld address zugewiesen. Der Zugriff auf die verschachtelten Felder erfolgt ebenfalls über person.address. Dieser Ansatz ist flexibler und fördert Wiederverwendbarkeit sowie einen modularen Aufbau des Codes.

Aufgabe

Swipe to start coding

Jedes Produkt wird durch eine Struktur Product dargestellt, die eine verschachtelte Struktur Manufacturer enthält. Die Funktion soll über ein Array von Produkten iterieren, prüfen, ob das Produkt zum angegebenen Hersteller gehört, und den Gesamtwert (price * quantity) aller passenden Produkte aufsummieren.

Implementierung einer Funktion calculateManufacturerTotal mit dem Rückgabetyp float.

  1. Innerhalb der Funktion eine float-Variable total mit dem Wert 0.0f initialisieren.
  2. Eine for-Schleife verwenden, um über das Array der Produkte von 0 bis n zu iterieren.
  3. Für jedes Produkt den Wert von manufacturer.companyName des Produkts mit dem Parameter companyName mittels strcmp vergleichen.
  4. Bei Übereinstimmung price * quantity zu total addieren.
  5. Den Endwert von total zurückgeben.

Lösung

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you show me an example of how to declare an embedded nested structure in C?

What are the advantages and disadvantages of using embedded versus separate nested structures?

How do I access the fields of a nested structure in C?

close

bookVerschachtelte Strukturen

Swipe um das Menü anzuzeigen

In C können Strukturen andere Strukturen als Mitglieder enthalten, zusätzlich zu Basistypen wie int oder char, Arrays und Zeigern. Verschachtelte Strukturen sind nützlich, wenn zusammengehörige Daten logisch gruppiert werden sollen.

Eingebettete verschachtelte Struktur

Eine eingebettete verschachtelte Struktur wird direkt innerhalb der äußeren Struktur deklariert. Das bedeutet, dass die verschachtelte Struktur nur innerhalb der äußeren Struktur existiert und nicht anderweitig verwendet werden kann.

main.c

main.c

copy
123456789101112131415161718192021
#include <stdio.h> struct Person { char name[50]; int age; struct Address { char street[50]; char city[50]; char index[10]; } address; // embedded nested structure }; int main() { struct Person person = { "Sherlock Holmes", 27, {"Baker Street", "London", "221B"} }; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }

In diesem Beispiel wird die Struktur Address innerhalb von Person definiert, sodass sie nur im Kontext der Struktur Person existiert. Auf die Felder der verschachtelten Struktur kann mit person.address zugegriffen werden, wodurch Sie street, city und index abrufen können. Dieser Ansatz ist praktisch, wenn die verschachtelten Daten spezifisch für eine einzelne äußere Struktur sind und nicht an anderer Stelle wiederverwendet werden müssen.

Separate verschachtelte Struktur

Eine separate verschachtelte Struktur wird unabhängig deklariert und anschließend in die äußere Struktur eingebunden. Dadurch kann die verschachtelte Struktur in mehreren äußeren Strukturen wiederverwendet oder separat instanziiert werden.

main.c

main.c

copy
123456789101112131415161718192021222324
#include <stdio.h> struct Address { char street[50]; char city[50]; char index[10]; }; struct Person { char name[50]; int age; struct Address address; // nested structure }; int main() { struct Address addr = {"Baker Street", "London", "221B"}; struct Person person = {"Sherlock Holmes", 27, addr}; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }

Hier wird Address unabhängig von Person deklariert, sodass es eigenständig oder in mehreren Strukturen verwendet werden kann. Beim Initialisieren einer Person wird eine Address-Instanz dem Feld address zugewiesen. Der Zugriff auf die verschachtelten Felder erfolgt ebenfalls über person.address. Dieser Ansatz ist flexibler und fördert Wiederverwendbarkeit sowie einen modularen Aufbau des Codes.

Aufgabe

Swipe to start coding

Jedes Produkt wird durch eine Struktur Product dargestellt, die eine verschachtelte Struktur Manufacturer enthält. Die Funktion soll über ein Array von Produkten iterieren, prüfen, ob das Produkt zum angegebenen Hersteller gehört, und den Gesamtwert (price * quantity) aller passenden Produkte aufsummieren.

Implementierung einer Funktion calculateManufacturerTotal mit dem Rückgabetyp float.

  1. Innerhalb der Funktion eine float-Variable total mit dem Wert 0.0f initialisieren.
  2. Eine for-Schleife verwenden, um über das Array der Produkte von 0 bis n zu iterieren.
  3. Für jedes Produkt den Wert von manufacturer.companyName des Produkts mit dem Parameter companyName mittels strcmp vergleichen.
  4. Bei Übereinstimmung price * quantity zu total addieren.
  5. Den Endwert von total zurückgeben.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 1
single

single

some-alt