On peut avoir besoin de désigner sous un seul nom, un ensemble de valeurs pouvant être de types différents :
Il existe en C, un format de données qui permet de regrouper et d'accèder à tous ces éléments différents : ce sont les structures.
Syntaxe de la déclaration d'une structure :
struct nom_de_la_structure
{
type nom_element_1;
type nom_element_2;
...
type nom_element_n;
};
Syntaxe de la déclaration
d'une variable de type correspondant :
struct nom_de_la_structure nom_variable_1,nom_variable_2,...,nom_variable_n;
Toute référence à un champ de variable structurée doit avoir la forme :
nom_variable.nom_champ
Exemple :
#include<stdio.h>
main()
{
struct
heure
{
int heu;
int min;
int sec;
};
struct
heure rendez_vous;
rendez_vous.heu=16;
/* le point permet
d'atteindre un élément d'une structure */
rendez_vous.min=32;
/* grace au point , on peut le manipuler comme une
variable */
rendez_vous.sec=47;
}
La déclaration typedef permet de définir ce que l'on nomme en langage C des "types synonymes".
Syntaxe :
typedef type type_synonyme
Cette méthode s'applique essentiellement aux structures, mais peut également s'appliquer à tous les types de variables.
Exemple :
typedef int
vecteur [3];
/* grace au typedef, on définit un type vecteur
comme étant */
/* des tableaux de trois variables entières */
vecteur v,w; /* est équivalent à int v[3],
w[3]; */
Exemple :
struct enreg
{
int numero;
int qte;
float prix;
};
typedef struct
enreg s_enreg;
s_enreg art1, art2; /* typedef a permit de créer
un type s_enreg */
On peut plus simplement écrire :
typedef struct
{
int numero;/*on a ainsi
définit un type*/
int qte; /*composé
"s_enreg" qui contient*/
float prix; /*un
numéro, une quantité, un prix*/
}s_enreg;
s_enreg art1, art2;