Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Struct lồng nhau (Nested structures) trong C


Struct trong struct (Nested structures)

Một struct bên trong struct khác gọi là struct lồng nhau.

Ví dụ:

struct emp{     int eno;     char ename[30];     float sal;     float da;     float hra;     float ea; }e;

Các mục thuộc khoản phụ cấp có thể nhóm lại thành struct con:

stuct emp{     int eno;     char ename[30];     float sal;     struct allowance{         float da;         float hra;         float ea;     }a; }e;

Thành viên sâu nhất trong struct lồng nhau được truy cập bằng cách nối các biến struct (từ ngoài vào trong) với thành viên bằng toán tử chấm.

Chương trình

Chương trình minh họa struct lồng nhau:

#include<stdio.h> //Khai báo struct ngoài và trong// struct Person//Struct chính//{     char Name[500];     int Age;     char Gender;     char temp;//Để xóa bộ đệm//     struct Address//Struct lồng//     {         char Apartment[500];         char Street[500];         char City[100];         char State[100];         int Zipcode;     }a[20];//Biến struct lồng//     }p[20];//Biến struct chính// void main(){     //Biến cho vòng lặp//     int i;     //Nhập dữ liệu//     for (i=1;i<3;i++){//Nhận dữ liệu 2 người//         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);//Xóa bộ đệm//         printf("Enter the Gender of person %d : ",i);         scanf("%c",&p[i].Gender);         scanf("%c",&p[i].temp);//Xóa bộ đệm//         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);//Xóa bộ đệm//     }     //In kết quả//     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);     } }

Kết quả

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