logo

Ugniježđena struktura u C

C nam pruža značajku ugniježđivanja jedne strukture unutar druge strukture pomoću koje se stvaraju složeni tipovi podataka. Na primjer, možda ćemo morati pohraniti adresu zaposlenika entiteta u strukturi. Adresa atributa također može imati poddijelove kao što su kućni broj, grad, država i PIN kod. Dakle, da bismo pohranili adresu zaposlenika, trebamo pohraniti adresu zaposlenika u zasebnu strukturu i ugnijezditi adresu strukture u strukturu zaposlenik. Razmotrite sljedeći 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); } 

Izlaz

djelomični derivat lateksa
 Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890 

Struktura se može ugniježditi na sljedeće načine.

  1. Po zasebnoj strukturi
  2. Po ugrađenoj strukturi

1) Odvojena struktura

Ovdje stvaramo dvije strukture, ali se zavisna struktura treba koristiti unutar glavne strukture kao član. Razmotrite sljedeći primjer.

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

Kao što vidite, doj (datum pridruživanja) je varijabla tipa Datum. Ovdje se doj koristi kao član u strukturi zaposlenika. Na ovaj način strukturu datuma možemo koristiti u mnogim strukturama.

2) Ugrađena struktura

Ugrađena struktura nam omogućuje da deklariramo strukturu unutar strukture. Stoga zahtijeva manje linija kodova, ali se ne može koristiti u više struktura podataka. Razmotrite sljedeći primjer.

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

Pristup ugniježđenoj strukturi

Možemo pristupiti članu ugniježđene strukture putem Outer_Structure.Nested_Structure.member kako je navedeno u nastavku:

uvjetni operator u Javi
 e1.doj.dd e1.doj.mm e1.doj.yyyy 

C Primjer ugniježđene strukture

Pogledajmo jednostavan primjer ugniježđene strukture u C jeziku.

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

Izlaz:

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

Prijenos strukture u funkciju

Baš kao i druge varijable, struktura se također može proslijediti funkciji. Možemo prenijeti članove strukture u funkciju ili prenijeti strukturnu varijablu odjednom. Razmotrite sljedeći primjer za prosljeđivanje strukturne varijable zaposlenik funkciji display() koja se koristi za prikaz pojedinosti o zaposleniku.

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