Un tableau est un aggrégat d’éléments de même type ; une {\tt struct} est un
aggrégat\footnote{Mammeri M. {\it programmation} {\sc ecole centrale de paris}
{\tiny 1997-1998} p. 112}
d’éléments de type (presque) arbitraire. Par exemple :
struct client
{
char * nom ;
int telephone ;
float solde ;
} ;
Les types de données abstraits font un grand usage de structures et notamment
de la structure MAILLON\footnote{{\it ibid}. p. 88}.
Différentes méthodes sont utilisées pour renseigner les éléments
d’une structure :
/* Designee par un nom */
struct client lambda ;
/* Designee par une adresse */
struct client * plambda ;
/* Un nom, donc un point */
lambda.nom = "Tournesol" ;
/* Une adresse, donc une fleche */
plambda->nom = "Hadock" ;
Ou comme pour les tableaux, au moment de l’instanciation :
struct client lambda =
{"Milou", 1244, 5.0} ;
Les objets de type structure peuvent être affectés, passés en argument
et renvoyés comme résultat d’une fonction. Par exemple :
La comparaison des structures n’est pas possible en langage C.
La taille d’un objet de type structure n’est pas nécessairement la somme
de la taille de chacun de ses membres. En effet, de nombreuses machines
exigent que les objets de certains types soient alloués sur des frontières
dépendantes de l’architecture. Cette contrainte implique l’obligation
d’utiliser {\tt sizeof} et de ne pas coder la taille de la structure {\it en
dur}.
Le nom d’un type devient utilisable immédiatement après avoir été
rencontré et non pas juste après la fin de la déclaration. Par exemple :