C giver os funktionen til at indlejre en struktur i en anden struktur ved at bruge, som komplekse datatyper oprettes. For eksempel kan vi være nødt til at gemme adressen på en enhedsmedarbejder i en struktur. Attributadressen kan også have underdelene som vejnummer, by, stat og pinkode. For at gemme medarbejderens adresse skal vi derfor gemme medarbejderens adresse i en separat struktur og indlejre strukturadressen i strukturmedarbejderen. Overvej følgende program.
#include struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void main () { struct employee emp; printf('Enter employee information? '); scanf('%s %s %d %s',emp.name,emp.add.city, &emp.add.pin, emp.add.phone); printf('Printing the employee information.... '); printf('name: %s City: %s Pincode: %d Phone: %s',emp.name,emp.add.city,emp.add.pin,emp.add.phone); }
Produktion
Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890
Strukturen kan indlejres på følgende måder.
- Ved separat struktur
- Efter indlejret struktur
1) Separat struktur
Her opretter vi to strukturer, men den afhængige struktur skal bruges inde i hovedstrukturen som medlem. Overvej følgende eksempel.
struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }emp1;
Som du kan se, er doj (tilslutningsdato) variablen af typen Date. Her bruges doj som medlem i Medarbejderstruktur. På denne måde kan vi bruge datostruktur i mange strukturer.
2) Indlejret struktur
Den indlejrede struktur gør det muligt for os at erklære strukturen inde i strukturen. Derfor kræver det mindre linje med koder, men det kan ikke bruges i flere datastrukturer. Overvej følgende eksempel.
struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }emp1;
Adgang til indlejret struktur
Vi kan få adgang til medlemmet af den indlejrede struktur af Outer_Structure.Nested_Structure.member som angivet nedenfor:
e1.doj.dd e1.doj.mm e1.doj.yyyy
C Eksempel på indlejret struktur
Lad os se et simpelt eksempel på den indlejrede struktur i C-sprog.
#include #include struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }e1; int main( ) { //storing employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array e1.doj.dd=10; e1.doj.mm=11; e1.doj.yyyy=2014; //printing first employee information printf( 'employee id : %d ', e1.id); printf( 'employee name : %s ', e1.name); printf( 'employee date of joining (dd/mm/yyyy) : %d/%d/%d ', e1.doj.dd,e1.doj.mm,e1.doj.yyyy); return 0; }
Produktion:
employee id : 101 employee name : Sonoo Jaiswal employee date of joining (dd/mm/yyyy) : 10/11/2014
Overfører struktur til at fungere
Ligesom andre variabler kan en struktur også overføres til en funktion. Vi kan overføre strukturelementerne til funktionen eller overføre strukturvariablen på én gang. Overvej følgende eksempel for at overføre strukturvariablen medarbejder til en funktion display(), som bruges til at vise detaljerne for en medarbejder.
#include struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void display(struct employee); void main () { struct employee emp; printf('Enter employee information? '); scanf('%s %s %d %s',emp.name,emp.add.city, &emp.add.pin, emp.add.phone); display(emp); } void display(struct employee emp) { printf('Printing the details.... '); printf('%s %s %d %s',emp.name,emp.add.city,emp.add.pin,emp.add.phone); }