Struct mit Arrays und Anderen Structs
In einigen Strukturen ist es notwendig, ein Array von verschachtelten Strukturen zu verwenden, wenn ein Objekt mehrere verwandte Unterobjekte enthält. Wenn beispielsweise ein Student mehrere Kurse belegen kann, ist es sinnvoll, die Kurse als Array von Strukturen innerhalb der Struktur Student darzustellen.
Beispielsyntax:
OuterStruct.NestedStruct[1].NestedField;
Um auf ein Element des Arrays der verschachtelten Strukturen zuzugreifen, verweist man zuerst auf die äußere Struktur, verwendet dann einen Index, um das gewünschte Element des Arrays auszuwählen, und greift schließlich auf ein bestimmtes Feld dieses Elements zu.
Praktisches Beispiel
Angenommen, jeder Student hat einen Namen, ein Alter und eine Reihe von Kursen. Jeder Kurs enthält seinen Titel, den Dozenten und die Anzahl der Leistungspunkte.
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
In diesem Beispiel verfügt die Struktur Student über ein courses-Array mit drei Elementen vom Typ Course. Jeder Kurs hat einen eigenen Titel, Dozenten und eine Anzahl von Credits. Um auf einen bestimmten Kurs zuzugreifen, verwenden Sie den Array-Index und den Punktoperator: student.courses[1].instructor.
Die Verwendung von Arrays verschachtelter Strukturen ist nützlich, um Objekte mit wiederholten Unterobjekten darzustellen, wie zum Beispiel Studenten mit Kursen, Geschäfte mit Produkten oder Bücher mit Autoren.
Swipe to start coding
Der Student wird durch eine Struktur Student dargestellt, die ein Array fester Größe mit verschachtelten Strukturen Course enthält. Jeder Kurs besitzt einen Namen, einen Dozenten und eine Anzahl an Credits. Die Funktion soll alle Kurse durchlaufen und die Credits aufsummieren.
Implementierung einer Funktion calculateTotalCredits mit dem Rückgabetyp int.
- Innerhalb der Funktion eine
int-Variabletotalmit dem Wert0initialisieren. - Eine
for-Schleife verwenden, die von0bis zur Anzahl der Kurse (3) iteriert. - Für jeden Kurs auf
creditszugreifen und diesen Wert zutotaladdieren. - 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 a code example of how to define these nested structures?
How do I access or modify a specific course for a student?
What are some other real-world scenarios where nested structure arrays are useful?
Großartig!
Completion Rate verbessert auf 4.35
Struct mit Arrays und Anderen Structs
Swipe um das Menü anzuzeigen
In einigen Strukturen ist es notwendig, ein Array von verschachtelten Strukturen zu verwenden, wenn ein Objekt mehrere verwandte Unterobjekte enthält. Wenn beispielsweise ein Student mehrere Kurse belegen kann, ist es sinnvoll, die Kurse als Array von Strukturen innerhalb der Struktur Student darzustellen.
Beispielsyntax:
OuterStruct.NestedStruct[1].NestedField;
Um auf ein Element des Arrays der verschachtelten Strukturen zuzugreifen, verweist man zuerst auf die äußere Struktur, verwendet dann einen Index, um das gewünschte Element des Arrays auszuwählen, und greift schließlich auf ein bestimmtes Feld dieses Elements zu.
Praktisches Beispiel
Angenommen, jeder Student hat einen Namen, ein Alter und eine Reihe von Kursen. Jeder Kurs enthält seinen Titel, den Dozenten und die Anzahl der Leistungspunkte.
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
In diesem Beispiel verfügt die Struktur Student über ein courses-Array mit drei Elementen vom Typ Course. Jeder Kurs hat einen eigenen Titel, Dozenten und eine Anzahl von Credits. Um auf einen bestimmten Kurs zuzugreifen, verwenden Sie den Array-Index und den Punktoperator: student.courses[1].instructor.
Die Verwendung von Arrays verschachtelter Strukturen ist nützlich, um Objekte mit wiederholten Unterobjekten darzustellen, wie zum Beispiel Studenten mit Kursen, Geschäfte mit Produkten oder Bücher mit Autoren.
Swipe to start coding
Der Student wird durch eine Struktur Student dargestellt, die ein Array fester Größe mit verschachtelten Strukturen Course enthält. Jeder Kurs besitzt einen Namen, einen Dozenten und eine Anzahl an Credits. Die Funktion soll alle Kurse durchlaufen und die Credits aufsummieren.
Implementierung einer Funktion calculateTotalCredits mit dem Rückgabetyp int.
- Innerhalb der Funktion eine
int-Variabletotalmit dem Wert0initialisieren. - Eine
for-Schleife verwenden, die von0bis zur Anzahl der Kurse (3) iteriert. - Für jeden Kurs auf
creditszugreifen und diesen Wert zutotaladdieren. - Den Endwert von
totalzurückgeben.
Lösung
Danke für Ihr Feedback!
single