Nested structs c: Nesting of structures is supported in C programming language. We can declare a structure variable as member of structure or write one Structure inside another structure.
There are two ways to define nested structure in C language.
Declaring a Structure Variable as Member of Another Structure
In this approach, we create two structures and include a structure variable as member variable of another structure.
struct Address
{
int houseNumber;
char street[100];
char zipCode;
};
struct Employee
{
char name[100];
int age;
float salary;
struct Address address;
} employee;
In above declaration, we have included a variable of structure Address as member of structure Employee.
Declaring a Structure inside Another Structure
In this approach, we declare a structure inside curly braces of another structure.
struct Employee
{
char name[100];
int age;
float salary;
struct Address
{
int houseNumber;
char street[100];
char zipCode;
} address;
} employee;
The normal data members of a structure is accessed by a single dot(.)operator but to access the member of inner structure we have to use dot operator twice.
Outer_Structure_variable.Inner_Structure_variable.Member
For Example
In above example, we can access zipCode of inner structure as
employee.address.zipCode
C Program to Show Nesting of Structure
In below program, we declare a structure “employee” which contains another structure “address” as member variable.

#include <stdio.h>
#include <conio.h>
struct employee {
char name[100];
int age;
float salary;
struct address {
int houseNumber;
char street[100];
}location;
};
int main(){
struct employee employee_one, *ptr;
printf("Enter Name, Age, Salary of Employee\n");
scanf("%s %d %f", &employee_one.name, &employee_one.age,
&employee_one.salary);
printf("Enter House Number and Street of Employee\n");
scanf("%d %s", &employee_one.location.houseNumber,
&employee_one.location.street);
printf("Employee Details\n");
printf(" Name : %s\n Age : %d\n Salary = %f\n House Number : %d\n Street : %s\n",
employee_one.name, employee_one.age, employee_one.salary,
employee_one.location.houseNumber, employee_one.location.street);
getch();
return 0;
}
Output
Enter Name, Age, Salary of Employee Jack 30 1234.5 Enter House Number and Street of Employee 500 Street_One Employee Details Name : Jack Age : 30 Salary = 1234.500000 House Number : 50 Street : Street_One