logo

Beágyazott szerkezet a C-ben

A C azt a funkciót kínálja számunkra, hogy egy struktúrát egy másik struktúrába ágyazunk be, amelynek segítségével összetett adattípusok jönnek létre. Például előfordulhat, hogy egy entitás alkalmazottjának címét tárolnunk kell egy struktúrában. Az attribútum címének alrészei is lehetnek utcaszámként, városként, államként és PIN-kódként. Ezért az alkalmazott címének tárolásához külön struktúrában kell tárolnunk az alkalmazott címét, és be kell ágyaznunk a struktúra címét a struktúra alkalmazottjába. Fontolja meg a következő programot.

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

Kimenet

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

A szerkezet a következő módokon ágyazható be.

  1. Külön szerkezettel
  2. Beágyazott szerkezet szerint

1) Külön szerkezet

Itt két struktúrát hozunk létre, de a függő struktúrát a fő struktúrán belül tagként kell használni. Tekintsük a következő példát.

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

Mint látható, a doj (csatlakozás dátuma) a Dátum típusú változó. Itt a doj tagként használatos az Employee struktúrában. Ily módon számos struktúrában használhatjuk a Date struktúrát.

2) Beágyazott szerkezet

A beágyazott struktúra lehetővé teszi, hogy deklaráljuk a szerkezetet a struktúrán belül. Ezért kevesebb kódsort igényel, de nem használható több adatszerkezetben. Tekintsük a következő példát.

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

Hozzáférés a beágyazott szerkezethez

A beágyazott struktúra tagját az Outer_Structure.Nested_Structure.member segítségével érhetjük el az alábbiak szerint:

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

C Beágyazott szerkezeti példa

Lássunk egy egyszerű példát a beágyazott szerkezetre C nyelvben.

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

Kimenet:

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

A szerkezet átadása a funkciónak

Más változókhoz hasonlóan egy struktúra is átadható egy függvénynek. A struktúratagokat átadhatjuk a függvénynek, vagy átadhatjuk a struktúraváltozót egyszerre. Tekintsük a következő példát az alkalmazott szerkezetváltozó átadására egy display() függvénynek, amely az alkalmazott adatainak megjelenítésére szolgál.

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