Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Struct med Arrayer og Andre Structer | Avansert Bruk av Struct
Mestre C-strukturer

bookStruct med Arrayer og Andre Structer

I noen strukturer er det nødvendig å bruke et array av nestede strukturer når ett objekt inneholder flere relaterte delobjekter. For eksempel, hvis en student kan ta flere kurs, er det hensiktsmessig å representere kursene som et array av strukturer inne i Student-strukturen.

Eksempelsyntaks:

OuterStruct.NestedStruct[1].NestedField;

For å få tilgang til et element i det nestede struktur-arrayet, refererer du først til den ytre strukturen, bruker deretter en indeks for å velge ønsket element i arrayet, og til slutt får du tilgang til et spesifikt felt i dette elementet.

Praktisk eksempel

Tenk deg at hver student har et navn, en alder og et sett med kurs. Hvert kurs inneholder tittel, instruktør og antall studiepoeng.

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 dette eksempelet har Student-strukturen et courses-array med tre elementer av typen Course. Hvert kurs har sin egen tittel, instruktør og antall studiepoeng. For å få tilgang til et bestemt kurs, bruk array-indeksen og punktumoperatoren: student.courses[1].instructor.

Å bruke arrayer av nestede strukturer er nyttig for å representere objekter med gjentatte underobjekter, som studenter med kurs, butikker med produkter eller bøker med forfattere.

Oppgave

Swipe to start coding

Studenten er representert av en struktur Student som inneholder et fast størrelse-array av nestede strukturer Course. Hver kurs har et navn, en instruktør og et antall studiepoeng. Funksjonen skal iterere gjennom alle kursene og summere studiepoengene.

Implementer en funksjon calculateTotalCredits med returtype int.

  1. Opprett en int-variabel total inni funksjonen og initialiser den til 0.
  2. Bruk en for-løkke for å iterere fra 0 til antall kurs (3).
  3. For hvert kurs, hent verdien av credits og legg den til total.
  4. Returner den endelige verdien av total.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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 og Andre Structer

Sveip for å vise menyen

I noen strukturer er det nødvendig å bruke et array av nestede strukturer når ett objekt inneholder flere relaterte delobjekter. For eksempel, hvis en student kan ta flere kurs, er det hensiktsmessig å representere kursene som et array av strukturer inne i Student-strukturen.

Eksempelsyntaks:

OuterStruct.NestedStruct[1].NestedField;

For å få tilgang til et element i det nestede struktur-arrayet, refererer du først til den ytre strukturen, bruker deretter en indeks for å velge ønsket element i arrayet, og til slutt får du tilgang til et spesifikt felt i dette elementet.

Praktisk eksempel

Tenk deg at hver student har et navn, en alder og et sett med kurs. Hvert kurs inneholder tittel, instruktør og antall studiepoeng.

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 dette eksempelet har Student-strukturen et courses-array med tre elementer av typen Course. Hvert kurs har sin egen tittel, instruktør og antall studiepoeng. For å få tilgang til et bestemt kurs, bruk array-indeksen og punktumoperatoren: student.courses[1].instructor.

Å bruke arrayer av nestede strukturer er nyttig for å representere objekter med gjentatte underobjekter, som studenter med kurs, butikker med produkter eller bøker med forfattere.

Oppgave

Swipe to start coding

Studenten er representert av en struktur Student som inneholder et fast størrelse-array av nestede strukturer Course. Hver kurs har et navn, en instruktør og et antall studiepoeng. Funksjonen skal iterere gjennom alle kursene og summere studiepoengene.

Implementer en funksjon calculateTotalCredits med returtype int.

  1. Opprett en int-variabel total inni funksjonen og initialiser den til 0.
  2. Bruk en for-løkke for å iterere fra 0 til antall kurs (3).
  3. For hvert kurs, hent verdien av credits og legg den til total.
  4. Returner den endelige verdien av total.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
single

single

some-alt