next up previous contents index
Next: Tableaux contre structures Up: No Title Previous: Argument tableau pluridimensionnel d'une

Structures

      

Les structures sont des types de données permettant de construire un objet en regroupant plusieurs autres objets. Un exemple simple est celui des nombres complexes[*], représentés par le type suivant :    

typedef struct {
  double re;
  double im;
} complexe;

On n'oubliera pas le << ; >> qui suit l'accolade fermant la définition. Le nom complexe désigne un nouveau type de données, ayant deux  champs re et im de type double. On peut définir une variable de ce type par :

 

complexe z = {1.0, 2.0};

puis accéder aux champs de z par z.re et z.im, qui sont deux variables de type double.

Une définition incomplète d'un complexe sera simplement :

  complexe z;

Les structures peuvent être passées en argument et retournées en résultat des fonctions. Comme pour tout autre type de données, le passage des arguments et du résultat se fait par valeur. On définira par exemple l'impression d'un nombre complexe par

void complexe_print(complexe z) {
  printf("%f + %f i", z.re, z.im);
}

et l'addition de deux nombres complexes par

complexe complexe_add(complexe z1, complexe z2) {
  complexe z = {
    z1.re + z2.re,
    z1.im + z2.im
  };

  return z;
}

Deux structures ne pouvant pas être comparées par == ou !=, il faudra le cas échéant construire ses propres fonctions de comparaison. Pour les complexes, la fonction

int complexe_eq(complexe z1, complexe z2) {
  return z1.re == z2.re && z1.im == z2.im;
}

retourne 0 ou 1 selon que ses deux arguments sont différents ou égaux.

 


next up previous contents index
Next: Tableaux contre structures Up: No Title Previous: Argument tableau pluridimensionnel d'une
Jean-Philippe Chancelier
9/29/1998