Indlejrede Structs
I C kan strukturer indeholde andre strukturer som medlemmer, ud over basale typer som int eller char, arrays og pointere. Indlejrede strukturer er nyttige, når du ønsker at gruppere relaterede data på en logisk måde.
Indlejret indre struktur
En indlejret indre struktur deklareres direkte inde i den ydre struktur. Dette betyder, at den indre struktur kun eksisterer inden for den ydre struktur og ikke kan bruges andre steder.
main.c
123456789101112131415161718192021#include <stdio.h> struct Person { char name[50]; int age; struct Address { char street[50]; char city[50]; char index[10]; } address; // embedded nested structure }; int main() { struct Person person = { "Sherlock Holmes", 27, {"Baker Street", "London", "221B"} }; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
I dette eksempel er Address-strukturen defineret inde i Person, så den eksisterer kun i konteksten af Person-strukturen. Du kan få adgang til felterne i den indlejrede struktur ved at bruge person.address, hvilket gør det muligt at hente street, city og index. Denne tilgang er praktisk, når de indlejrede data er specifikke for en enkelt ydre struktur og ikke behøver at blive genbrugt andre steder.
Separat indlejret struktur
En separat indlejret struktur erklæres uafhængigt og inkluderes derefter i den ydre struktur. Dette gør det muligt at genbruge den indlejrede struktur i flere ydre strukturer eller at instantiere den separat.
main.c
123456789101112131415161718192021222324#include <stdio.h> struct Address { char street[50]; char city[50]; char index[10]; }; struct Person { char name[50]; int age; struct Address address; // nested structure }; int main() { struct Address addr = {"Baker Street", "London", "221B"}; struct Person person = {"Sherlock Holmes", 27, addr}; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
Her erklæres Address uafhængigt af Person, så den kan bruges alene eller indgå i flere strukturer. Når en Person initialiseres, tildeles en Address-instans til feltet address. Adgang til de indlejrede felter foregår på samme måde ved at bruge person.address. Denne tilgang er mere fleksibel og fremmer genbrug af kode samt modulært design.
Swipe to start coding
Hvert produkt repræsenteres af en struktur Product, der indeholder en indlejret struktur Manufacturer. Funktionen skal iterere over et array af produkter, kontrollere om produktet tilhører den angivne producent, og summere den samlede værdi (price * quantity) af alle matchende produkter.
Implementér en funktion calculateManufacturerTotal med returtypen float.
- Opret inden i funktionen en
float-variabeltotal, initialiseret til0.0f. - Brug en
for-løkke til at iterere over arrayet af produkter fra0tiln. - For hvert produkt sammenlignes produktets
manufacturer.companyNamemed parameterencompanyNameved hjælp afstrcmp. - Hvis der er et match, lægges
price * quantitytiltotal. - Returnér den endelige værdi af
total.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you show me an example of how to declare an embedded nested structure in C?
What are the advantages and disadvantages of using embedded versus separate nested structures?
How do I access the fields of a nested structure in C?
Fantastisk!
Completion rate forbedret til 4.35
Indlejrede Structs
Stryg for at vise menuen
I C kan strukturer indeholde andre strukturer som medlemmer, ud over basale typer som int eller char, arrays og pointere. Indlejrede strukturer er nyttige, når du ønsker at gruppere relaterede data på en logisk måde.
Indlejret indre struktur
En indlejret indre struktur deklareres direkte inde i den ydre struktur. Dette betyder, at den indre struktur kun eksisterer inden for den ydre struktur og ikke kan bruges andre steder.
main.c
123456789101112131415161718192021#include <stdio.h> struct Person { char name[50]; int age; struct Address { char street[50]; char city[50]; char index[10]; } address; // embedded nested structure }; int main() { struct Person person = { "Sherlock Holmes", 27, {"Baker Street", "London", "221B"} }; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
I dette eksempel er Address-strukturen defineret inde i Person, så den eksisterer kun i konteksten af Person-strukturen. Du kan få adgang til felterne i den indlejrede struktur ved at bruge person.address, hvilket gør det muligt at hente street, city og index. Denne tilgang er praktisk, når de indlejrede data er specifikke for en enkelt ydre struktur og ikke behøver at blive genbrugt andre steder.
Separat indlejret struktur
En separat indlejret struktur erklæres uafhængigt og inkluderes derefter i den ydre struktur. Dette gør det muligt at genbruge den indlejrede struktur i flere ydre strukturer eller at instantiere den separat.
main.c
123456789101112131415161718192021222324#include <stdio.h> struct Address { char street[50]; char city[50]; char index[10]; }; struct Person { char name[50]; int age; struct Address address; // nested structure }; int main() { struct Address addr = {"Baker Street", "London", "221B"}; struct Person person = {"Sherlock Holmes", 27, addr}; printf("Name: %s\n", person.name); printf("Age: %d\n", person.age); printf("Address: %s, %s, %s\n", person.address.index, person.address.street, person.address.city); return 0; }
Her erklæres Address uafhængigt af Person, så den kan bruges alene eller indgå i flere strukturer. Når en Person initialiseres, tildeles en Address-instans til feltet address. Adgang til de indlejrede felter foregår på samme måde ved at bruge person.address. Denne tilgang er mere fleksibel og fremmer genbrug af kode samt modulært design.
Swipe to start coding
Hvert produkt repræsenteres af en struktur Product, der indeholder en indlejret struktur Manufacturer. Funktionen skal iterere over et array af produkter, kontrollere om produktet tilhører den angivne producent, og summere den samlede værdi (price * quantity) af alle matchende produkter.
Implementér en funktion calculateManufacturerTotal med returtypen float.
- Opret inden i funktionen en
float-variabeltotal, initialiseret til0.0f. - Brug en
for-løkke til at iterere over arrayet af produkter fra0tiln. - For hvert produkt sammenlignes produktets
manufacturer.companyNamemed parameterencompanyNameved hjælp afstrcmp. - Hvis der er et match, lægges
price * quantitytiltotal. - Returnér den endelige værdi af
total.
Løsning
Tak for dine kommentarer!
single