Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Nested Structures in C

Introduction

In C programming, structures are used to group different types of variables under a single name. A nested structure is a structure that contains another structure as its member. This type of structure is useful when you want to represent complex data types and relationships.

Basic Syntax of Nested Structures

The syntax for defining a nested structure is straightforward. You define one structure inside another structure. Here is a basic example:

struct Address {
    char street[50];
    char city[50];
    int zip;
};

struct Person {
    char name[50];
    int age;
    struct Address address;
};
                

In this example, the Person structure contains the Address structure as one of its members.

Accessing Members of Nested Structures

To access the members of a nested structure, you use the dot operator. Here is how you can create a variable of the nested structure and access its members:

#include <stdio.h>

struct Address {
    char street[50];
    char city[50];
    int zip;
};

struct Person {
    char name[50];
    int age;
    struct Address address;
};

int main() {
    struct Person person;

    // Assign values to the members
    strcpy(person.name, "John Doe");
    person.age = 30;
    strcpy(person.address.street, "123 Main St");
    strcpy(person.address.city, "Anytown");
    person.address.zip = 12345;

    // Access and print the values
    printf("Name: %s\n", person.name);
    printf("Age: %d\n", person.age);
    printf("Street: %s\n", person.address.street);
    printf("City: %s\n", person.address.city);
    printf("ZIP: %d\n", person.address.zip);

    return 0;
}
                
Name: John Doe
Age: 30
Street: 123 Main St
City: Anytown
ZIP: 12345

Benefits of Using Nested Structures

Nested structures provide several benefits:

  • They help in organizing complex data types.
  • They enhance code readability and maintainability.
  • They allow for a clear representation of relationships between different data types.

Example: Employee Database

Let's create a more complex example involving an employee database. We will use nested structures to store employee information, including their personal details and job details.

#include <stdio.h>

struct JobDetails {
    char designation[50];
    int salary;
};

struct Employee {
    char name[50];
    int age;
    struct JobDetails job;
};

int main() {
    struct Employee emp;

    // Assign values to the members
    strcpy(emp.name, "Alice Smith");
    emp.age = 28;
    strcpy(emp.job.designation, "Software Engineer");
    emp.job.salary = 70000;

    // Access and print the values
    printf("Name: %s\n", emp.name);
    printf("Age: %d\n", emp.age);
    printf("Designation: %s\n", emp.job.designation);
    printf("Salary: %d\n", emp.job.salary);

    return 0;
}
                
Name: Alice Smith
Age: 28
Designation: Software Engineer
Salary: 70000

Conclusion

Nested structures in C are a powerful way to represent complex data types and relationships. By understanding how to define and use nested structures, you can write more organized and maintainable code. Practice creating and using nested structures to become comfortable with this concept.