logo

Vnorená štruktúra v C

C nám poskytuje funkciu vnorenia jednej štruktúry do inej štruktúry, pomocou ktorej sa vytvárajú zložité dátové typy. Napríklad môžeme potrebovať uložiť adresu zamestnanca entity v štruktúre. Adresa atribútu môže mať aj podčasti ako číslo ulice, mesto, štát a kód PIN. Preto, aby sme uložili adresu zamestnanca, musíme uložiť adresu zamestnanca do samostatnej štruktúry a vložiť adresu štruktúry do štruktúry zamestnanec. Zvážte nasledujúci 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); } 

Výkon

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

Štruktúra môže byť vnorená nasledujúcimi spôsobmi.

  1. Samostatnou štruktúrou
  2. Podľa vstavanej štruktúry

1) Samostatná štruktúra

Tu vytvoríme dve štruktúry, ale závislá štruktúra by sa mala použiť vo vnútri hlavnej štruktúry ako člen. Zvážte nasledujúci príklad.

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

Ako vidíte, doj (dátum pripojenia) je premenná typu Dátum. Tu sa doj používa ako člen v zamestnaneckej štruktúre. Týmto spôsobom môžeme použiť štruktúru dátumu v mnohých štruktúrach.

char a int java

2) Vstavaná štruktúra

Vložená štruktúra nám umožňuje deklarovať štruktúru vo vnútri štruktúry. Preto vyžaduje menej riadkov kódov, ale nemožno ho použiť vo viacerých dátových štruktúrach. Zvážte nasledujúci príklad.

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

Prístup k vnorenej štruktúre

K členovi vnorenej štruktúry môžeme pristupovať pomocou Outer_Structure.Nested_Structure.member, ako je uvedené nižšie:

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

C Príklad vnorenej štruktúry

Pozrime sa na jednoduchý príklad vnorenej štruktúry v jazyku C.

java výber zoradiť
 #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ýkon:

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

Odovzdanie štruktúry funkcii

Rovnako ako iné premenné, aj štruktúra môže byť odovzdaná funkcii. Môžeme odovzdať členy štruktúry do funkcie alebo odovzdať premennú štruktúry naraz. Zvážte nasledujúci príklad na odovzdanie premennej štruktúry zamestnanec do funkcie display(), ktorá sa používa na zobrazenie podrobností o zamestnancovi.

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