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.
- Po zasebnoj strukturi
- 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); }