logo

Vnořená struktura v C

C nám poskytuje funkci vnořování jedné struktury do jiné struktury, pomocí které se vytvářejí složité datové typy. Například můžeme potřebovat uložit adresu zaměstnance entity do struktury. Adresa atributu může mít také podčásti jako číslo ulice, město, stát a kód PIN. Pro uložení adresy zaměstnance tedy musíme uložit adresu zaměstnance do samostatné struktury a vnořit adresu struktury do struktury zaměstnanec. Zvažte následující program.

int v řetězci
 #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); } 

Výstup

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

Strukturu lze vnořit následujícími způsoby.

  1. Samostatnou strukturou
  2. Podle vestavěné struktury

1) Samostatná struktura

Zde vytvoříme dvě struktury, ale závislá struktura by měla být použita uvnitř hlavní struktury jako člen. Zvažte následující příklad.

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

Jak vidíte, doj (datum připojení) je proměnná typu Datum. Zde se doj používá jako člen ve struktuře Zaměstnanci. Tímto způsobem můžeme použít strukturu Date v mnoha strukturách.

2) Vestavěná struktura

Vložená struktura nám umožňuje deklarovat strukturu uvnitř struktury. Vyžaduje tedy méně řádků kódů, ale nelze jej použít ve více datových strukturách. Zvažte následující příklad.

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

Přístup k vnořené struktuře

K členu vnořené struktury můžeme přistupovat pomocí Outer_Structure.Nested_Structure.member, jak je uvedeno níže:

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

C Příklad vnořené struktury

Podívejme se na jednoduchý příklad vnořené struktury v jazyce C.

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

Výstup:

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

Předávání struktury funkci

Stejně jako jiné proměnné lze funkci předat také strukturu. Můžeme předat členy struktury do funkce nebo předat proměnnou struktury najednou. Zvažte následující příklad, abyste předali proměnnou struktury zaměstnanec funkci display(), která se používá k zobrazení podrobností o zaměstnanci.

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