logo

Estructura imbricada en C

C ens proporciona la característica d'anar una estructura dins d'una altra estructura mitjançant la qual es creen tipus de dades complexos. Per exemple, és possible que hàgim d'emmagatzemar l'adreça d'un empleat de l'entitat en una estructura. L'adreça de l'atribut també pot tenir subparts com a número de carrer, ciutat, estat i codi PIN. Per tant, per emmagatzemar l'adreça de l'empleat, hem d'emmagatzemar l'adreça de l'empleat en una estructura separada i niu l'adreça de l'estructura a l'empleat de l'estructura. Considereu el programa següent.

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

Sortida

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

L'estructura es pot anidar de les maneres següents.

  1. Per estructura separada
  2. Per estructura integrada

1) Estructura separada

Aquí, creem dues estructures, però l'estructura dependent s'ha d'utilitzar dins de l'estructura principal com a membre. Considereu l'exemple següent.

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

Com podeu veure, doj (data d'unió) és la variable de tipus Data. Aquí doj s'utilitza com a membre a l'estructura de l'empleat. D'aquesta manera, podem utilitzar l'estructura de data en moltes estructures.

2) Estructura incrustada

L'estructura incrustada ens permet declarar l'estructura dins de l'estructura. Per tant, requereix menys línia de codis, però no es pot utilitzar en diverses estructures de dades. Considereu l'exemple següent.

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

Accés a l'estructura imbricada

Podem accedir al membre de l'estructura imbricada mitjançant Outer_Structure.Nested_Structure.member tal com es mostra a continuació:

pel·lícules123 a
 e1.doj.dd e1.doj.mm e1.doj.yyyy 

C Exemple d'estructura imbricada

Vegem un exemple senzill de l'estructura imbricada en llenguatge 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; } 

Sortida:

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

Passant l'estructura a la funció

Igual que altres variables, una estructura també es pot passar a una funció. Podem passar els membres de l'estructura a la funció o passar la variable d'estructura alhora. Considereu l'exemple següent per passar la variable d'estructura employee a una funció display() que s'utilitza per mostrar els detalls d'un empleat.

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