logo

Ugnezdena struktura v C

C nam ponuja funkcijo ugnezdenja ene strukture v drugo strukturo, s pomočjo katere se ustvarijo zapleteni tipi podatkov. Na primer, morda bomo morali shraniti naslov zaposlenega v subjektu v strukturi. Naslov atributa ima lahko tudi poddele, kot so ulična številka, mesto, država in koda PIN. Če želimo torej shraniti naslov zaposlenega, moramo naslov zaposlenega shraniti v ločeno strukturo in naslov strukture ugnezditi v strukturo zaposleni. Razmislite o naslednjem programu.

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

Izhod

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

Strukturo je mogoče ugnezditi na naslednje načine.

  1. Z ločeno strukturo
  2. Z vgrajeno strukturo

1) Ločena struktura

Tukaj ustvarimo dve strukturi, vendar je treba odvisno strukturo uporabiti znotraj glavne strukture kot člana. Razmislite o naslednjem primeru.

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

Kot lahko vidite, je doj (datum pridružitve) spremenljivka tipa Datum. Tukaj se doj uporablja kot član v strukturi zaposlenih. Na ta način lahko uporabimo datumsko strukturo v številnih strukturah.

2) Vgrajena struktura

Vgrajena struktura nam omogoča, da deklariramo strukturo znotraj strukture. Zato zahteva manj vrstic kod, vendar ga ni mogoče uporabiti v več podatkovnih strukturah. Razmislite o naslednjem primeru.

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

Dostop do ugnezdene strukture

Do člana ugnezdene strukture lahko dostopamo z Outer_Structure.Nested_Structure.member, kot je navedeno spodaj:

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

C Primer ugnezdene strukture

Oglejmo si preprost primer ugnezdene strukture v jeziku 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; } 

Izhod:

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

Prenos strukture v funkcijo

Tako kot druge spremenljivke je tudi strukturo mogoče posredovati funkciji. Člane strukture lahko posredujemo v funkcijo ali posredujemo strukturno spremenljivko naenkrat. Razmislite o naslednjem primeru za posredovanje strukturne spremenljivke zaposleni v funkcijo display(), ki se uporablja za prikaz podrobnosti zaposlenega.

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