Nøstede Strukturer
I C kan strukturer inneholde andre strukturer som medlemmer, i tillegg til grunnleggende typer som int eller char, arrayer og pekere. Nøstede strukturer er nyttige når du ønsker å gruppere relatert data på en logisk måte.
Innebygd nøstet struktur
En innebygd nøstet struktur deklareres direkte inne i den ytre strukturen. Dette betyr at den nøstede strukturen kun eksisterer innenfor den ytre strukturen og ikke kan brukes 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 eksemplet er Address-strukturen definert inne i Person, så den eksisterer kun i konteksten til Person-strukturen. Du kan få tilgang til feltene i den nestede strukturen ved å bruke person.address, som lar deg hente ut street, city og index. Denne tilnærmingen er praktisk når de nestede dataene er spesifikke for én ytre struktur og ikke trenger å gjenbrukes andre steder.
Separat nestet struktur
En separat nestet struktur erklæres uavhengig og inkluderes deretter i den ytre strukturen. Dette gjør det mulig å gjenbruke den nestede strukturen i flere ytre strukturer eller instansiere 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 er Address deklarert uavhengig av Person, slik at den kan brukes alene eller inne i flere strukturer. Når en Person initialiseres, tildeles en Address-instans til address-feltet. Tilgang til de nestede feltene fungerer på samme måte ved å bruke person.address. Denne tilnærmingen gir større fleksibilitet og fremmer gjenbruk av kode og modulær design.
Swipe to start coding
Hvert produkt er representert av en struktur Product som inneholder en nestet struktur Manufacturer. Funksjonen skal iterere over et array av produkter, sjekke om produktet tilhører den angitte produsenten, og summere den totale verdien (price * quantity) for alle matchende produkter.
Implementer en funksjon calculateManufacturerTotal med returtype float.
- Opprett en
float-variabeltotalinni funksjonen, initialisert til0.0f. - Bruk en
for-løkke for å iterere over arrayet av produkter fra0tiln. - For hvert produkt, sammenlign produktets
manufacturer.companyNamemed parameterencompanyNameved å brukestrcmp. - Hvis det er samsvar, legg til
price * quantitytiltotal. - Returner den endelige verdien av
total.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 4.35
Nøstede Strukturer
Sveip for å vise menyen
I C kan strukturer inneholde andre strukturer som medlemmer, i tillegg til grunnleggende typer som int eller char, arrayer og pekere. Nøstede strukturer er nyttige når du ønsker å gruppere relatert data på en logisk måte.
Innebygd nøstet struktur
En innebygd nøstet struktur deklareres direkte inne i den ytre strukturen. Dette betyr at den nøstede strukturen kun eksisterer innenfor den ytre strukturen og ikke kan brukes 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 eksemplet er Address-strukturen definert inne i Person, så den eksisterer kun i konteksten til Person-strukturen. Du kan få tilgang til feltene i den nestede strukturen ved å bruke person.address, som lar deg hente ut street, city og index. Denne tilnærmingen er praktisk når de nestede dataene er spesifikke for én ytre struktur og ikke trenger å gjenbrukes andre steder.
Separat nestet struktur
En separat nestet struktur erklæres uavhengig og inkluderes deretter i den ytre strukturen. Dette gjør det mulig å gjenbruke den nestede strukturen i flere ytre strukturer eller instansiere 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 er Address deklarert uavhengig av Person, slik at den kan brukes alene eller inne i flere strukturer. Når en Person initialiseres, tildeles en Address-instans til address-feltet. Tilgang til de nestede feltene fungerer på samme måte ved å bruke person.address. Denne tilnærmingen gir større fleksibilitet og fremmer gjenbruk av kode og modulær design.
Swipe to start coding
Hvert produkt er representert av en struktur Product som inneholder en nestet struktur Manufacturer. Funksjonen skal iterere over et array av produkter, sjekke om produktet tilhører den angitte produsenten, og summere den totale verdien (price * quantity) for alle matchende produkter.
Implementer en funksjon calculateManufacturerTotal med returtype float.
- Opprett en
float-variabeltotalinni funksjonen, initialisert til0.0f. - Bruk en
for-løkke for å iterere over arrayet av produkter fra0tiln. - For hvert produkt, sammenlign produktets
manufacturer.companyNamemed parameterencompanyNameved å brukestrcmp. - Hvis det er samsvar, legg til
price * quantitytiltotal. - Returner den endelige verdien av
total.
Løsning
Takk for tilbakemeldingene dine!
single