Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Nøstede Strukturer | Avansert Bruk av Struct
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Mestre C-strukturer

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

main.c

copy
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

main.c

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

Oppgave

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.

  1. Opprett en float-variabel total inni funksjonen, initialisert til 0.0f.
  2. Bruk en for-løkke for å iterere over arrayet av produkter fra 0 til n.
  3. For hvert produkt, sammenlign produktets manufacturer.companyName med parameteren companyName ved å bruke strcmp.
  4. Hvis det er samsvar, legg til price * quantity til total.
  5. Returner den endelige verdien av total.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 1
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

close

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

main.c

copy
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

main.c

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

Oppgave

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.

  1. Opprett en float-variabel total inni funksjonen, initialisert til 0.0f.
  2. Bruk en for-løkke for å iterere over arrayet av produkter fra 0 til n.
  3. For hvert produkt, sammenlign produktets manufacturer.companyName med parameteren companyName ved å bruke strcmp.
  4. Hvis det er samsvar, legg til price * quantity til total.
  5. 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 1
single

single

some-alt