Les estructures imbricades són una característica poderosa del llenguatge C que permet definir estructures dins d'altres estructures. Aquesta capacitat és útil per modelar dades complexes de manera organitzada i jeràrquica. En aquest tema, aprendrem com crear i utilitzar estructures imbricades, amb exemples pràctics i exercicis per reforçar els conceptes.

Conceptes Clau

  1. Definició d'Estructures Imbricades: Una estructura imbricada és una estructura que conté una o més estructures com a membres.
  2. Accés a Membres d'Estructures Imbricades: Utilitzem l'operador de punt (.) per accedir als membres de les estructures imbricades.
  3. Inicialització d'Estructures Imbricades: Les estructures imbricades es poden inicialitzar de manera similar a les estructures simples.

Definició d'Estructures Imbricades

Per definir una estructura imbricada, simplement incloem una estructura com a membre d'una altra estructura. Vegem un exemple:

#include <stdio.h>

// Definició de l'estructura "Address"
struct Address {
    char street[50];
    char city[50];
    int zipCode;
};

// Definició de l'estructura "Person"
struct Person {
    char name[50];
    int age;
    struct Address address; // Estructura imbricada
};

int main() {
    // Declaració i inicialització d'una variable de tipus "Person"
    struct Person person = {"John Doe", 30, {"123 Main St", "Anytown", 12345}};

    // Accés als membres de l'estructura imbricada
    printf("Name: %s\n", person.name);
    printf("Age: %d\n", person.age);
    printf("Address: %s, %s, %d\n", person.address.street, person.address.city, person.address.zipCode);

    return 0;
}

Explicació del Codi

  1. Definició de l'Estructura Address:

    • Conté tres membres: street, city i zipCode.
  2. Definició de l'Estructura Person:

    • Conté tres membres: name, age i una estructura Address anomenada address.
  3. Inicialització de l'Estructura Person:

    • La variable person es declara i s'inicialitza amb valors per a name, age i address.
  4. Accés als Membres:

    • Utilitzem l'operador de punt (.) per accedir als membres de l'estructura Person i als membres de l'estructura Address imbricada.

Exercicis Pràctics

Exercici 1: Definició i Accés a Estructures Imbricades

Defineix una estructura Book que contingui una estructura Author. La informació de l'autor ha d'incloure el nom i l'edat. La informació del llibre ha d'incloure el títol, l'any de publicació i l'autor.

Solució

#include <stdio.h>

// Definició de l'estructura "Author"
struct Author {
    char name[50];
    int age;
};

// Definició de l'estructura "Book"
struct Book {
    char title[50];
    int year;
    struct Author author; // Estructura imbricada
};

int main() {
    // Declaració i inicialització d'una variable de tipus "Book"
    struct Book book = {"The C Programming Language", 1978, {"Brian W. Kernighan", 79}};

    // Accés als membres de l'estructura imbricada
    printf("Title: %s\n", book.title);
    printf("Year: %d\n", book.year);
    printf("Author: %s, Age: %d\n", book.author.name, book.author.age);

    return 0;
}

Exercici 2: Modificació de Membres d'Estructures Imbricades

Modifica el codi de l'exercici anterior per canviar el nom de l'autor a "Dennis M. Ritchie" i l'edat a 70. Mostra els valors actualitzats.

Solució

#include <stdio.h>

// Definició de l'estructura "Author"
struct Author {
    char name[50];
    int age;
};

// Definició de l'estructura "Book"
struct Book {
    char title[50];
    int year;
    struct Author author; // Estructura imbricada
};

int main() {
    // Declaració i inicialització d'una variable de tipus "Book"
    struct Book book = {"The C Programming Language", 1978, {"Brian W. Kernighan", 79}};

    // Modificació dels membres de l'estructura imbricada
    book.author.name[0] = '\0'; // Neteja el nom anterior
    snprintf(book.author.name, sizeof(book.author.name), "Dennis M. Ritchie");
    book.author.age = 70;

    // Accés als membres de l'estructura imbricada
    printf("Title: %s\n", book.title);
    printf("Year: %d\n", book.year);
    printf("Author: %s, Age: %d\n", book.author.name, book.author.age);

    return 0;
}

Errors Comuns i Consells

  1. Oblidar Inicialitzar Membres: Assegura't d'inicialitzar tots els membres de les estructures imbricades per evitar valors indeterminats.
  2. Accés Incorrecte als Membres: Recorda utilitzar l'operador de punt (.) per accedir als membres de les estructures imbricades.
  3. Desbordament de Memòria: Quan treballis amb cadenes de caràcters, assegura't que la longitud de la cadena no excedeixi la capacitat del camp de l'estructura.

Resum

En aquesta secció, hem après com definir i utilitzar estructures imbricades en C. Hem vist com inicialitzar-les, accedir als seus membres i modificar-los. Les estructures imbricades són una eina poderosa per organitzar dades complexes de manera jeràrquica i clara. Amb la pràctica, aquestes tècniques es convertiran en una part essencial del teu arsenal de programació en C.

Curs de Programació en C

Mòdul 1: Introducció al C

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

Mòdul 5: Arrays i Strings

Mòdul 6: Punteres

Mòdul 7: Estructures i Unions

Mòdul 8: Assignació Dinàmica de Memòria

Mòdul 9: Gestió d'Arxius

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats