logo

Structure imbriquée en C

C nous offre la possibilité d'imbriquer une structure dans une autre structure grâce à laquelle des types de données complexes sont créés. Par exemple, nous pouvons avoir besoin de stocker l'adresse d'un employé d'une entité dans une structure. L'adresse d'attribut peut également contenir des sous-parties telles que le numéro de rue, la ville, l'état et le code PIN. Par conséquent, pour stocker l’adresse de l’employé, nous devons stocker l’adresse de l’employé dans une structure distincte et imbriquer l’adresse de la structure dans la structure employé. Considérez le programme suivant.

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

Sortir

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

La structure peut être imbriquée des manières suivantes.

renard contre loup
  1. Par structure distincte
  2. Par structure embarquée

1) Structure séparée

Ici, nous créons deux structures, mais la structure dépendante doit être utilisée à l'intérieur de la structure principale en tant que membre. Considérez l'exemple suivant.

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

Comme vous pouvez le voir, doj (date d'adhésion) est la variable de type Date. Ici, doj est utilisé en tant que membre dans la structure des employés. De cette façon, nous pouvons utiliser la structure Date dans de nombreuses structures.

chaîne de fractionnement c++

2) Structure embarquée

La structure embarquée nous permet de déclarer la structure à l'intérieur de la structure. Par conséquent, il nécessite moins de lignes de codes mais il ne peut pas être utilisé dans plusieurs structures de données. Considérez l'exemple suivant.

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

Accéder à la structure imbriquée

Nous pouvons accéder au membre de la structure imbriquée par Outer_Structure.Nested_Structure.member comme indiqué ci-dessous :

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

Exemple de structure imbriquée en C

Voyons un exemple simple de structure imbriquée en langage C.

rhel contre centos
 #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; } 

Sortir:

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

Passer de la structure à la fonction

Tout comme les autres variables, une structure peut également être transmise à une fonction. Nous pouvons transmettre les membres de la structure dans la fonction ou transmettre la variable de structure en même temps. Considérons l'exemple suivant pour transmettre la variable de structure employé à une fonction display() qui est utilisée pour afficher les détails d'un employé.

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