The ones who are crazy enough to think they can change the world are the ones who do.
- Steve Jobs

C Structure within Structure

In C, a structure declaration can be placed inside another structure. This is also known as nesting of structure. The declaration is same as the declaration of data type in structure. Structure within structure (or) nesting of structure is used to create complex records. There are two methods to declare a structure within structure. Programmers can use either one method to declare structure within structure.

  • Embedded Structure Declaration
  • Two Separate Structure Declaration

C Program - Structure within Structure - Embedded Declaration

struct-struct.c
#include <stdio.h>
int main()
{
struct student{
char name[30];
struct avg{
int sub1, sub2, sub3;
float average;
}avg1;
};
struct student stud1;
printf("Enter the Name of the student ");
scanf("%s", stud1.name);
printf("\nEnter the marks of the student ");
scanf("%d %d %d ", &stud1.avg1.sub1, &stud1.avg1.sub2, &stud1.avg1.sub3);
stud1.avg1.average = (stud1.avg1.sub1 + stud1.avg1.sub2 + stud1.avg1.sub3)/3;
printf("\n-------Student Details-------\n ");
printf("%s", stud1.name);
printf("\nsub1: %d \n sub2: %d \n sub3: %d ", stud1.avg1.sub1, stud1.avg1.sub2, stud1.avg1.sub3);
printf("\n Average: %f %", stud1.avg1.average);
return 0;
}
  • Enter the Name of the student siva
  • Enter the marks of the student 78 82 80
  • -------Student Details-------
  • siva
  • sub1: 78
  • sub2: 82
  • sub3: 80
  • Average: 80.000000 %

Note:

The above program uses Embedded type declaration. Structure avg is defined within the structure student.

C Program - Structure within Structure - Two Structure Declaration

struct-struct-2.c
#include <stdio.h>
int main()
{
struct avg{
int sub1, sub2, sub3;
float average;
}avg1;
struct student{
char name[30];
struct avg avg1;
};
struct student stud1;
printf("Enter the Name of the student ");
scanf("%s", stud1.name);
printf("\nEnter the marks of the student ");
scanf("%d %d %d ", &stud1.avg1.sub1, &stud1.avg1.sub2, &stud1.avg1.sub3);
stud1.avg1.average = (stud1.avg1.sub1 + stud1.avg1.sub2 + stud1.avg1.sub3)/3;
printf("\n-------Student Details-------\n ");
printf("%s",stud1.name);
printf("\nsub1 : %d \n sub2 : %d \n sub3 : %d ",stud1.avg1.sub1, stud1.avg1.sub2, stud1.avg1.sub3);
printf("\nAverage : %f %", stud1.avg1.average);
return 0;
}
  • Enter the Name of the student siva
  • Enter the marks of the student 78 82 80
  • -------Student Details-------
  • siva
  • sub1: 78
  • sub2: 82
  • sub3: 80
  • Average: 80.000000 %

Note:

The above program uses two structure declaration method. Structure avg is defined outside the structure student.

Report Us

We may make mistakes(spelling, program bug, typing mistake and etc.), So we have this container to collect mistakes. We highly respect your findings.

Report