English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C nous offre la fonction de placer une structure à l'intérieur d'une autre structure, créant ainsi des types de données complexes. Par exemple, nous pourrions avoir besoin de stocker l'adresse physique de l'employé dans une structure. Et l'adresse peut également contenir d'autres informations, telles que le numéro de rue, la ville, la région et le mot de passe. Par conséquent, pour stocker l'adresse de l'employé, nous devons stocker l'adresse de l'employé dans une structure séparée et imbriquer l'adresse de cette structure dans la structure de l'employé. Regardez le programme suivant.
#include<stdio.h> struct address { char city[20]; int pin; char phone[14]; }; struct employee { char name[20]; struct address add; }; void main () { struct employee emp; printf("输入员工信息?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); printf("Imprimer les informations de l'employé....\n"); printf("Nom: %s\nVille: %s\nPNuméro: %d\nTéléphone: %s", emp.name, emp.add.city, emp.add.pin, emp.add.phone); }
Résultat de la sortie
Entrer les informations de l'employé? Arun Delhi 110001 1234567890 Imprimer les informations de l'employé.... Nom: Arun Ville: Delhi Numéro: 110001 Téléphone: 1234567890
Cette structure peut être imbriquée de la manière suivante.
Par des structures individuelles
Par la structure en mode intégré
Ici, nous avons créé deux structures, mais la structure dépendante doit être utilisée en tant que membre à l'intérieur de la structure principale. Regardez l'exemple suivant.
struct Date { int dd; int mm; int yyyy; }; struct Employee { int id; char name[20]; struct Date doj; }}emp1;
On peut voir que doj est une variable de type date. Ici, doj est utilisé en tant que membre de la structure Employee. De cette manière, nous pouvons utiliser la structure Date dans de nombreuses structures.
La structure en mode intégré nous permet de déclarer des structures à l'intérieur de la structure. Par conséquent, elle nécessite moins de lignes de code, mais ne peut pas être utilisée dans plusieurs structures de données. Regardez l'exemple suivant.
struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; }}emp1;
我们可以通过Outer_Structure.Nested_Structure.member访问嵌套结构的成员,如下所示:
e1.doj.dd e1.doj.mm e1.doj.yyyy
让我们来看一个简单的C语言嵌套结构示例。
#include<stdio.h> #include<string.h> struct Employee { int id; char name[20]; struct Date { int dd; int mm; int yyyy; })doj; })e1; int main ( { //存储员工信息 e1.id =101; strcpy(e1.name, "Sonoo Jaiswal");//将字符串复制到字符数组中 e1.doj.dd =10; e1.doj.mm =11; e1.doj.yyyy =2014; //打印第一个雇员信息 printf("员工ID : %d\n", e1.id); printf("员工姓名 : %s\n", e1.name); printf("员工加入日期 (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd,e1.doj.mm,e1.doj.yyyy); return 0; }
输出:
员工ID : 101 员工姓名 : Seagull Ali 员工加入日期 (dd/mm/yyyy) : 10/11/2014
和其他变量一样,结构也可以传递给函数。我们可以将结构成员传递给函数,或者一次传递结构变量。下面的示例将结构变量employee传递给display()函数,该函数用于显示雇员的详细信息。
#include<stdio.h> 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("输入员工信息?\n"); scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone); display(emp); } void display(struct employee emp) { printf("Imprimer les informations de l'employé.....\n"); printf("%s %s %d %s",emp.name,emp.add.city,emp.add.pin,emp.add.phone); }