Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Struct Med Arrayer Och Andra Structar | Avancerad Användning av Structar
Behärska C-Strukturer

bookStruct 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

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; }

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.

Uppgift

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.

  1. Skapa en int-variabel total inuti funktionen och initiera den till 0.
  2. Använd en for-loop för att iterera från 0 till antalet kurser (3).
  3. För varje kurs, hämta credits och lägg till det i total.
  4. Returnera det slutliga värdet av total.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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

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; }

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.

Uppgift

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.

  1. Skapa en int-variabel total inuti funktionen och initiera den till 0.
  2. Använd en for-loop för att iterera från 0 till antalet kurser (3).
  3. För varje kurs, hämta credits och lägg till det i total.
  4. Returnera det slutliga värdet av total.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 2
single

single

some-alt