A structure can be placed within another structure, i.e., a structure may contain another structure as its member. A structure that contains another structure as its member is called a nested structure.
NESTED
STRUCTURES
A
structure can be placed within another structure, i.e., a structure may contain
another structure as its member. A structure that contains another structure as
its member is called a nested structure.
Let
us now see how we declare nested structures or structures that contain
structures. Although it is possible to declare a nested structure with one declaration,
it is not recommended. The easier and clearer way is to declare the structures
separately and then group them in a high- level structure. When you do this,
take care to check that nesting must be done from inside out (from lowest level
to the most inclusive level), i.e., to say, declare the innermost structure,
then the next level structure, working towards the outer (most inclusive)
structure.
typedef struct
{
char first name [20];
char mid_name [20];
char last name [20];
}NAME;
typedef struct
{
int dd;
int mm;
int yy:
}DATE;
typedef struct student
{
int r_no;
NAME name;
char course [20];
DATE DOB;
float fees;
};
In
this example, we see that the structure student contains two other
structures-NAME and DATE. Both these structures have their own fields. The
structure NAME has three fields: first_name,
mid_name, and last_name. The structure DATE also has three fields: dd, mm,
and yy, which specify the day, month, and year of the date. To assign values to
the structure fields, we will write
student stud1;
{
studl.name.first_name
="Janak";
studl.name.mid_name =
"Raj";
studl.name.last_name =
"Thareja";
stud1.course = "BCA";
studl.DOB. dd = 15;
stud1.DOB.mm = 09;
studl.DOB.yy = 1990;
studl.fees = 45000;
In
case of nested structures we use the dot operator in conjunction with the
structure variables to access the members of the innermost as well as the
outermost structures. The use of nested structures is illustrated in the
following program:
5.
Write a program to read and display information of a student using a structure
within a structure.
#include <stdio.h>
#include <conio.h>
int main()
{
struct DOB
{
int day;
int month;
int year;
};
struct student
{
int roll_no;
char name [100];
float fees;
struct DOB date;
};
struct student stud1;
clrscr();
printf("\n Enter the roll
number: ");
scanf("%d", &stud1.roll_no);
printf("\n Enter the name:
");
scanf("%s", stud1.name);
printf("\n Enter the fees:
");
scanf("%f", &stud1.fees);
printf("\n Enter the DOB:
");
scanf("%d %d %d",
&stud1.date.day, &stud1.date.month, &stud1.date. year);
printf("\n *** STUDENT'S
DETAILS ***");
printf("\n ROLL No. =
%d", stud1.roll_no);
printf("\n NAME %%s",
stud1.name);
printf("\n FEES = %f",
stud1. fees);
printf("\n DOB %d %d %d",
stud1. date.day, stud1.date.month, stud1.date. year);
getch();
return 0;
}
Output
Enter the roll number: 01
Enter the name: Rahul
Enter the fees: 45000
Enter the DOB: 25 09 1991
********STUDENT'S DETAILS ****
ROLL NO. = 01
NAME = Rahul
FEES = 45000.00
DOB = 25-09-1991
Programming in C: Unit IV: Structures and Union : Tag: : with Example C Programs - Nested Structures
Programming in C
CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation
Professional English II
HS3251 2nd Semester 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation
Statistics and Numerical Methods
MA3251 2nd Semester 2021 Regulation M2 Engineering Mathematics 2 | 2nd Semester Common to all Dept 2021 Regulation
Engineering Graphics
GE3251 eg 2nd semester | 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation
Physics for Electrical Engineering
PH3202 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Basic Civil and Mechanical Engineering
BE3255 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Electric Circuit Analysis
EE3251 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Physics for Electronics Engineering
PH3254 - Physics II - 2nd Semester - ECE Department - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Electrical and Instrumentation Engineering
BE3254 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Circuit Analysis
EC3251 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Materials Science
PH3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation
Basic Electrical and Electronics Engineering
BE3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation
Physics for Civil Engineering
PH3201 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation
Basic Electrical, Electronics and Instrumentation Engineering
BE3252 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation
Physics for Information Science
PH3256 2nd Semester CSE Dept | 2021 Regulation | 2nd Semester CSE Dept 2021 Regulation
Basic Electrical and Electronics Engineering
BE3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation
Programming in C
CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation