Struct Med Arrayer Och Andra Structar
I vissa strukturer blir det nödvändigt att använda en array av nästlade strukturer när ett objekt innehåller flera relaterade delobjekt. Till exempel, om en student kan gå flera kurser, är det logiskt att representera kurserna som en array av strukturer inuti Student-strukturen.
Exempelsyntax:
OuterStruct.NestedStruct[1].NestedField;
För att komma åt ett element i arrayen av nästlade strukturer refererar du först till den yttre strukturen, använder sedan ett index för att välja önskat element i arrayen och slutligen kommer du åt ett specifikt fält i det elementet.
Praktiskt exempel
Föreställ dig att varje student har ett namn, en ålder och en uppsättning kurser. Varje kurs innehåller sin titel, instruktör och antal poäng.
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; }
I det här exemplet har strukturen Student en courses-array med tre element av typen Course. Varje kurs har sin egen titel, instruktör och antal poäng. För att komma åt en specifik kurs används arrayindex och punktoperatorn: student.courses[1].instructor.
Att använda arrayer av nästlade strukturer är användbart för att representera objekt med upprepade delobjekt, såsom studenter med kurser, butiker med produkter eller böcker med författare.
Swipe to start coding
Studenten representeras av en struktur Student som innehåller en fast storlek på en array av nästlade strukturer Course. Varje kurs har ett namn, en instruktör och ett antal poäng. Funktionen ska iterera genom alla kurser och summera poängen.
Implementera en funktion calculateTotalCredits med returtypen int.
- Skapa en
int-variabeltotalinuti funktionen och initiera den till0. - Använd en
for-loop för att iterera från0till antalet kurser (3). - För varje kurs, hämta
creditsoch lägg till det itotal. - Returnera det slutliga värdet av
total.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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?
Fantastiskt!
Completion betyg förbättrat till 4.35
Struct Med Arrayer Och Andra Structar
Svep för att visa menyn
I vissa strukturer blir det nödvändigt att använda en array av nästlade strukturer när ett objekt innehåller flera relaterade delobjekt. Till exempel, om en student kan gå flera kurser, är det logiskt att representera kurserna som en array av strukturer inuti Student-strukturen.
Exempelsyntax:
OuterStruct.NestedStruct[1].NestedField;
För att komma åt ett element i arrayen av nästlade strukturer refererar du först till den yttre strukturen, använder sedan ett index för att välja önskat element i arrayen och slutligen kommer du åt ett specifikt fält i det elementet.
Praktiskt exempel
Föreställ dig att varje student har ett namn, en ålder och en uppsättning kurser. Varje kurs innehåller sin titel, instruktör och antal poäng.
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; }
I det här exemplet har strukturen Student en courses-array med tre element av typen Course. Varje kurs har sin egen titel, instruktör och antal poäng. För att komma åt en specifik kurs används arrayindex och punktoperatorn: student.courses[1].instructor.
Att använda arrayer av nästlade strukturer är användbart för att representera objekt med upprepade delobjekt, såsom studenter med kurser, butiker med produkter eller böcker med författare.
Swipe to start coding
Studenten representeras av en struktur Student som innehåller en fast storlek på en array av nästlade strukturer Course. Varje kurs har ett namn, en instruktör och ett antal poäng. Funktionen ska iterera genom alla kurser och summera poängen.
Implementera en funktion calculateTotalCredits med returtypen int.
- Skapa en
int-variabeltotalinuti funktionen och initiera den till0. - Använd en
for-loop för att iterera från0till antalet kurser (3). - För varje kurs, hämta
creditsoch lägg till det itotal. - Returnera det slutliga värdet av
total.
Lösning
Tack för dina kommentarer!
single