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

bookStruct 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

main.c

copy
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.

Aufgabe

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.

  1. Innerhalb der Funktion eine int-Variable total mit dem Wert 0 initialisieren.
  2. Eine for-Schleife verwenden, die von 0 bis zur Anzahl der Kurse (3) iteriert.
  3. Für jeden Kurs auf credits zugreifen und diesen Wert zu total addieren.
  4. 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 2
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 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?

close

bookStruct 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

main.c

copy
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.

Aufgabe

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.

  1. Innerhalb der Funktion eine int-Variable total mit dem Wert 0 initialisieren.
  2. Eine for-Schleife verwenden, die von 0 bis zur Anzahl der Kurse (3) iteriert.
  3. Für jeden Kurs auf credits zugreifen und diesen Wert zu total addieren.
  4. 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 2
single

single

some-alt