logo

Structură imbricată în C

C ne oferă caracteristica de a imbrica o structură într-o altă structură prin care sunt create tipuri de date complexe. De exemplu, este posibil să fie nevoie să stocăm adresa unui angajat al unei entități într-o structură. Adresa atributului poate avea și subpărți ca număr de stradă, oraș, stat și cod PIN. Prin urmare, pentru a stoca adresa angajatului, trebuie să stocăm adresa angajatului într-o structură separată și să plasăm adresa structurii în angajatul structurii. Luați în considerare următorul 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); } 

Ieșire

leagăn java
 Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890 

Structura poate fi imbricată în următoarele moduri.

  1. Prin structură separată
  2. Prin structură încorporată

1) Structură separată

Aici, creăm două structuri, dar structura dependentă ar trebui utilizată în interiorul structurii principale ca membru. Luați în considerare următorul exemplu.

 struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }emp1; 

După cum puteți vedea, doj (data aderării) este variabila de tip Date. Aici doj este folosit ca membru în structura Angajaților. În acest fel, putem folosi structura Date în multe structuri.

strint la int

2) Structură încorporată

Structura încorporată ne permite să declarăm structura din interiorul structurii. Prin urmare, necesită mai puțină linie de coduri, dar nu poate fi utilizat în mai multe structuri de date. Luați în considerare următorul exemplu.

 struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }emp1; 

Accesarea structurii imbricate

Putem accesa membrul structurii imbricate prin Outer_Structure.Nested_Structure.member, după cum este prezentat mai jos:

 e1.doj.dd e1.doj.mm e1.doj.yyyy 

C Exemplu de structură imbricată

Să vedem un exemplu simplu al structurii imbricate în limbajul C.

cum să obțineți data curentă în java
 #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; } 

Ieșire:

 employee id : 101 employee name : Sonoo Jaiswal employee date of joining (dd/mm/yyyy) : 10/11/2014 

Trecerea structurii în funcție

La fel ca și alte variabile, o structură poate fi transmisă unei funcții. Putem trece membrii structurii în funcție sau putem trece variabila structurii deodată. Luați în considerare următorul exemplu pentru a trece variabila de structură angajat la o funcție display() care este utilizată pentru a afișa detaliile unui angajat.

 #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); }