logo

Ligzdota struktūra C

C nodrošina iespēju ligzdot vienu struktūru citā struktūrā, ar kuras palīdzību tiek izveidoti sarežģīti datu tipi. Piemēram, mums var būt nepieciešams saglabāt entītijas darbinieka adresi struktūrā. Atribūta adresei var būt arī tādas apakšdaļas kā ielas numurs, pilsēta, valsts un PIN kods. Tādējādi, lai saglabātu darbinieka adresi, mums ir jāsaglabā darbinieka adrese atsevišķā struktūrā un struktūras adrese jāievieto struktūras darbiniekā. Apsveriet šādu programmu.

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

Izvade

json formāta piemērs
 Enter employee information? Arun Delhi 110001 1234567890 Printing the employee information.... name: Arun City: Delhi Pincode: 110001 Phone: 1234567890 

Struktūru var ligzdot šādos veidos.

  1. Pēc atsevišķas struktūras
  2. Pēc iegultās struktūras

1) Atsevišķa struktūra

Šeit mēs izveidojam divas struktūras, bet atkarīgā struktūra ir jāizmanto galvenās struktūras iekšpusē kā dalībnieks. Apsveriet šādu piemēru.

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

Kā redzat, doj (pievienošanās datums) ir Datuma tipa mainīgais. Šeit doj tiek izmantots kā darbinieku struktūras dalībnieks. Tādā veidā mēs varam izmantot datuma struktūru daudzās struktūrās.

2) Iegultā struktūra

Iegultā struktūra ļauj mums deklarēt struktūru struktūras iekšpusē. Tādējādi tam ir nepieciešams mazāk kodu rindu, taču to nevar izmantot vairākās datu struktūrās. Apsveriet šādu piemēru.

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

Piekļuve ligzdotajai struktūrai

Mēs varam piekļūt ligzdotās struktūras dalībniekam, izmantojot Outer_Structure.Nested_Structure.member, kā norādīts tālāk:

c formatēta virkne
 e1.doj.dd e1.doj.mm e1.doj.yyyy 

C Ligzdotas struktūras piemērs

Apskatīsim vienkāršu ligzdotās struktūras piemēru C valodā.

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

Izvade:

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

Struktūras nodošana funkcionēšanai

Tāpat kā citus mainīgos, struktūru var arī nodot funkcijai. Mēs varam nodot struktūras elementus funkcijai vai nodot struktūras mainīgo uzreiz. Apsveriet šo piemēru, lai nosūtītu struktūras mainīgo darbinieks funkcijai display(), ko izmanto, lai parādītu informāciju par darbinieku.

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