English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base du langage C

Contrôle du flux du langage C

Fonctions en C

Tableaux en C

Pointeurs en C

Chaînes en C

Structure du langage C

Fichier du langage C

Autres C

Manuel de référence du langage C

Structures imbriquées en C

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.

  1. Par des structures individuelles

  2. Par la structure en mode intégré

1)Structures séparées

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.

2)Structure en mode intégré

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嵌套结构示例

让我们来看一个简单的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);
}