logo

Įdėta struktūra C

C suteikia mums galimybę įterpti vieną struktūrą į kitą struktūrą, kurią naudojant sukuriami sudėtingi duomenų tipai. Pavyzdžiui, mums gali tekti išsaugoti subjekto darbuotojo adresą struktūroje. Atributo adreso poskyriai taip pat gali turėti gatvės numerį, miestą, valstiją ir PIN kodą. Taigi, norėdami išsaugoti darbuotojo adresą, turime išsaugoti darbuotojo adresą atskiroje struktūroje ir sudėti struktūros adresą į struktūros darbuotoją. Apsvarstykite toliau pateiktą 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); } 

Išvestis

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

Struktūrą galima įdėti šiais būdais.

  1. Pagal atskirą struktūrą
  2. Pagal įterptąją struktūrą

1) Atskira struktūra

Čia sukuriame dvi struktūras, tačiau priklausomoji struktūra turėtų būti naudojama pagrindinės struktūros viduje kaip narys. Apsvarstykite toliau pateiktą pavyzdį.

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

Kaip matote, doj (prisijungimo data) yra Datos tipo kintamasis. Čia doj naudojamas kaip Darbuotojų struktūros narys. Tokiu būdu datos struktūrą galime naudoti daugelyje struktūrų.

2) Įterpta struktūra

Įterpta struktūra leidžia mums deklaruoti struktūrą struktūros viduje. Taigi tam reikia mažiau kodų eilučių, tačiau jo negalima naudoti keliose duomenų struktūrose. Apsvarstykite toliau pateiktą pavyzdį.

kas yra 10 iš 1 mln
 struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; }doj; }emp1; 

Prieiga prie įdėtos struktūros

Įdėtos struktūros narį galime pasiekti naudodami Outer_Structure.Nested_Structure.member, kaip nurodyta toliau:

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

C Įdėtos struktūros pavyzdys

Pažiūrėkime paprastą įdėtos struktūros pavyzdį C kalba.

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

Išvestis:

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

Struktūros perdavimas veikti

Kaip ir kiti kintamieji, struktūra taip pat gali būti perduota funkcijai. Mes galime perduoti struktūros narius į funkciją arba perduoti struktūros kintamąjį iš karto. Apsvarstykite šį pavyzdį, kaip perduoti struktūros kintamąjį darbuotojas funkcijai display(), kuri naudojama informacijai apie darbuotoją rodyti.

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