구조 내 구조(또는) 중첩 구조
다른 구조 내부의 구조를 중첩 구조라고 합니다.
다음 예를 고려하십시오.
struct emp{
int eno;
char ename[30];
float sal;
float da;
float hra;
float ea;
}e; 허용 범위에 속하는 모든 항목은 다음과 같이 하위 구조로 함께 그룹화되고 선언될 수 있습니다.
stuct emp{
int eno;
char ename[30];
float sal;
struct allowance{
float da;
float hra;
float ea;
}a;
}e; 중첩 구조에서 가장 안쪽의 멤버는 도트 연산자를 사용하여 해당 멤버와 관련된 모든 구조 변수(가장 바깥쪽에서 안쪽으로)를 변경하여 액세스할 수 있습니다.
프로그램
다음 프로그램은 중첩 구조(구조 내 구조)를 시연하는 것입니다. −
#include<stdio.h>
//Declaring outer and inter structures//
struct Person//Main Structure//{
char Name[500];
int Age;
char Gender;
char temp;//To clear buffer//
struct Address//Nested Structure//{
char Apartment[500];
char Street[500];
char City[100];
char State[100];
int Zipcode;
}a[20];//Nested Structure Variable//
}p[20];//Main Structure Variable//
void main(){
//Declaring variable for For loop//
int i;
//Reading User I/p//
for (i=1;i<3;i++){//Declaring function to accept 2 people's data//
printf("Enter the Name of person %d : ",i);
gets(p[i].Name);
printf("Enter the Age of person %d : ",i);
scanf("%d",&p[i].Age);
scanf("%c",&p[i].temp);//Clearing Buffer//
printf("Enter the Gender of person %d : ",i);
scanf("%c",&p[i].Gender);
scanf("%c",&p[i].temp);//Clearing Buffer//
printf("Enter the City of person %d : ",i);
gets(p[i].a[i].City);
printf("Enter the State of person %d : ",i);
gets(p[i].a[i].State);
printf("Enter the Zip Code of person %d : ",i);
scanf("%d",&p[i].a[i].Zipcode);
scanf("%c",&p[i].temp);//Clearing Buffer//
}
//Printing O/p//
for (i=1;i<3;i++){
printf("The Name of person %d is : %s\n",i,p[i].Name);
printf("The Age of person %d is : %d\n",i,p[i].Age);
printf("The Gender of person %d is : %c\n",i,p[i].Gender);
printf("The City of person %d is : %s\n",i,p[i].a[i].City);
printf("The State of person %d is : %s\n",i,p[i].a[i].State);
printf("The Zip code of person %d is : %d\n",i,p[i].a[i].Zipcode);
}
} 출력
Enter the Name of person 1 : Enter the Age of person 1 : Enter the Gender of person 1 : Enter the City of person 1 : Enter the State of person 1 : Enter the Zip Code of person 1 : Enter the Name of person 2 : Enter the Age of person 2 : Enter the Gender of person 2 : Enter the City of person 2 : Enter the State of person 2 : Enter the Zip Code of person 2 : The Name of person 1 is : The Age of person 1 is : 0 The Gender of person 1 is : The City of person 1 is : The State of person 1 is : The Zip code of person 1 is : 0 The Name of person 2 is : The Age of person 2 is : 0 The Gender of person 2 is : The City of person 2 is : The State of person 2 is : The Zip code of person 2 is : 0