Structures within Structures (Nested Structures) in C Programming

Structures can be used as structures within structures. It is also called as ‘nesting of structures’.

Syntax:

struct structure_nm
{
	<data-type> element 1;
	<data-type> element 2;
	- - - - - - - - - - -
	- - - - - - - - - - -
	<data-type> element n;
	
	struct structure_nm
	{
		<data-type> element 1;
		<data-type> element 2;
		- - - - - - - - - - -
		- - - - - - - - - - -	
		<data-type> element n;
	}inner_struct_var;
}outer_struct_var;

Example :

struct stud_Res
{
	int rno;
	char nm[50];
	char std[10];
	
	struct stud_subj
	{
		char subjnm[30];
		int marks;
	}subj;
}result;

In above example, the structure stud_Res consists of stud_subj which itself is a structure with two members. Structure stud_Res is called as ‘outer structure’ while stud_subj is called as ‘inner structure.’ The members which are inside the inner structure can be accessed as follow :
result.subj.subjnm
result.subj.marks

Program :

/*  Program to demonstrate nested structures.
Creation Date : 23 Nov 2010 04:04:01 AM
Author : www.technoexam.com [Technowell, Sangli] */

#include <stdio.h>
#include <conio.h>

struct stud_Res
{
	int rno;
	char std[10];
	struct stud_Marks
	{
		char subj_nm[30];
		int subj_mark;
	}marks;
}result;

int main(void)
{
	clrscr();
	printf("\n\t Enter Roll Number : ");
	scanf("%d",&result.rno);
	printf("\n\t Enter Standard : ");
	scanf("%s",result.std);
	printf("\n\t Enter Subject Code : ");
	scanf("%s",result.marks.subj_nm);
	printf("\n\t Enter Marks : ");
	scanf("%d",&result.marks.subj_mark);
	printf("\n\n\t Roll Number : %d",result.rno);
	printf("\n\n\t Standard : %s",result.std);
	printf("\nSubject Code : %s",result.marks.subj_nm);
	printf("\n\n\t Marks : %d",result.marks.subj_mark);
	getch();
	return 0;
}

Output :

	Enter Roll Number : 1
	
	Enter Standard : MCA(Sci)-I
	
	Enter Subject Code : SUB001
	
	Enter Marks : 63
	
	
	Roll Number : 1
	
	Standard : MCA(Sci)-I
        Subject Code : SUB001

	Marks : 63_

Leave A Comment

Your email address will not be published. Required fields are marked *