Verschachtelte 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
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
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.
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.
- Innerhalb der Funktion eine
float-Variabletotalmit dem Wert0.0finitialisieren. - Eine
for-Schleife verwenden, um über das Array der Produkte von0bisnzu iterieren. - Für jedes Produkt den Wert von
manufacturer.companyNamedes Produkts mit dem ParametercompanyNamemittelsstrcmpvergleichen. - Bei Übereinstimmung
price * quantityzutotaladdieren. - Den Endwert von
totalzurückgeben.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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?
Großartig!
Completion Rate verbessert auf 4.35
Verschachtelte 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
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
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.
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.
- Innerhalb der Funktion eine
float-Variabletotalmit dem Wert0.0finitialisieren. - Eine
for-Schleife verwenden, um über das Array der Produkte von0bisnzu iterieren. - Für jedes Produkt den Wert von
manufacturer.companyNamedes Produkts mit dem ParametercompanyNamemittelsstrcmpvergleichen. - Bei Übereinstimmung
price * quantityzutotaladdieren. - Den Endwert von
totalzurückgeben.
Lösung
Danke für Ihr Feedback!
single