Geneste Structs
In C kunnen structuren andere structuren als leden bevatten, naast basistypen zoals int of char, arrays en pointers. Geneste structuren zijn nuttig wanneer u gerelateerde gegevens op een logische manier wilt groeperen.
Ingebedde geneste structuur
Een ingebedde geneste structuur wordt direct binnen de buitenste structuur gedeclareerd. Dit betekent dat de geneste structuur alleen binnen de buitenste structuur bestaat en niet elders kan worden gebruikt.
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; }
In dit voorbeeld wordt de structuur Address gedefinieerd binnen Person, waardoor deze alleen bestaat binnen de context van de structuur Person. Je kunt de velden van de geneste structuur benaderen via person.address, waarmee je toegang krijgt tot street, city en index. Deze aanpak is handig wanneer de geneste gegevens specifiek zijn voor één enkele buitenste structuur en niet elders hoeven te worden hergebruikt.
Afzonderlijke Geneste Structuur
Een afzonderlijke geneste structuur wordt onafhankelijk gedeclareerd en vervolgens opgenomen in de buitenste structuur. Hierdoor kan de geneste structuur in meerdere buitenste structuren worden hergebruikt of afzonderlijk worden geïnstantieerd.
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; }
Hier wordt Address onafhankelijk van Person gedeclareerd, zodat het zowel zelfstandig als binnen meerdere structuren kan worden gebruikt. Bij het initialiseren van een Person wijzen we een Address-instantie toe aan het address-veld. Het benaderen van de geneste velden gebeurt op dezelfde manier via person.address. Deze aanpak is flexibeler en bevordert hergebruik van code en een modulaire opzet.
Swipe to start coding
Elk product wordt weergegeven door een structuur Product die een geneste structuur Manufacturer bevat. De functie moet over een array van producten itereren, controleren of het product tot de opgegeven fabrikant behoort, en de totale waarde (price * quantity) van alle overeenkomende producten optellen.
Implementeer een functie calculateManufacturerTotal met het retourtype float.
- Maak binnen de functie een
float-variabeletotalen initialiseer deze met0.0f. - Gebruik een
for-lus om over de array van producten van0totnte itereren. - Vergelijk voor elk product de
manufacturer.companyNamevan het product met de parametercompanyNamemet behulp vanstrcmp. - Als deze overeenkomen, tel dan
price * quantityop bijtotal. - Retourneer de uiteindelijke waarde van
total.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Geweldig!
Completion tarief verbeterd naar 4.35
Geneste Structs
Veeg om het menu te tonen
In C kunnen structuren andere structuren als leden bevatten, naast basistypen zoals int of char, arrays en pointers. Geneste structuren zijn nuttig wanneer u gerelateerde gegevens op een logische manier wilt groeperen.
Ingebedde geneste structuur
Een ingebedde geneste structuur wordt direct binnen de buitenste structuur gedeclareerd. Dit betekent dat de geneste structuur alleen binnen de buitenste structuur bestaat en niet elders kan worden gebruikt.
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; }
In dit voorbeeld wordt de structuur Address gedefinieerd binnen Person, waardoor deze alleen bestaat binnen de context van de structuur Person. Je kunt de velden van de geneste structuur benaderen via person.address, waarmee je toegang krijgt tot street, city en index. Deze aanpak is handig wanneer de geneste gegevens specifiek zijn voor één enkele buitenste structuur en niet elders hoeven te worden hergebruikt.
Afzonderlijke Geneste Structuur
Een afzonderlijke geneste structuur wordt onafhankelijk gedeclareerd en vervolgens opgenomen in de buitenste structuur. Hierdoor kan de geneste structuur in meerdere buitenste structuren worden hergebruikt of afzonderlijk worden geïnstantieerd.
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; }
Hier wordt Address onafhankelijk van Person gedeclareerd, zodat het zowel zelfstandig als binnen meerdere structuren kan worden gebruikt. Bij het initialiseren van een Person wijzen we een Address-instantie toe aan het address-veld. Het benaderen van de geneste velden gebeurt op dezelfde manier via person.address. Deze aanpak is flexibeler en bevordert hergebruik van code en een modulaire opzet.
Swipe to start coding
Elk product wordt weergegeven door een structuur Product die een geneste structuur Manufacturer bevat. De functie moet over een array van producten itereren, controleren of het product tot de opgegeven fabrikant behoort, en de totale waarde (price * quantity) van alle overeenkomende producten optellen.
Implementeer een functie calculateManufacturerTotal met het retourtype float.
- Maak binnen de functie een
float-variabeletotalen initialiseer deze met0.0f. - Gebruik een
for-lus om over de array van producten van0totnte itereren. - Vergelijk voor elk product de
manufacturer.companyNamevan het product met de parametercompanyNamemet behulp vanstrcmp. - Als deze overeenkomen, tel dan
price * quantityop bijtotal. - Retourneer de uiteindelijke waarde van
total.
Oplossing
Bedankt voor je feedback!
single