13 Regroupement de données - struct
La première étape consiste à définir des types correspondant à des
regroupements de données, des n-uplets. Par exemple, une fraction peut
être vue comme une paire d'entiers : un numérateur et un dénominateur. Nous
pouvons définir un type lui correspondant de la manière suivante :
struct fraction {
int num;
int den;
};
Il devient alors possible de définir des variables de type
fraction par l'instruction habituelle :
fraction f, g;
La variable f est une structure de deux entiers, on parle de
champs: un champ num et un champ den. On peut
accéder aux champs avec l'opérateur ``.'' : f.num ou
f.den. Ces deux champs peuvent s'utiliser comme n'importe quelle
variable entière :
//=========================
f.num = 1;
f.den = 3;
cout << f.num << "/" << f.den;
//=========================
On peut évidemment définir d'autres champs :
struct envrac {
int val;
double d1, d2;
bool b;
};
Une variable e de type envrac contient un champ entier
(e.val), deux champs flottants (e.d1 et e.d2) et
un champ booléen (e.b).
Une expression ``g = f'' où f et g sont d'un
type struct, correspond à l'affectation ``champ à champ'' : la
valeur de chaque champ de f est recopiée dans le champ
correspondant de g. Ce mécanisme est aussi appliqué lorsque l'on
utilise des objets de type struct en paramètres de fonction ou
lorsque on utilise ce type comme résultat d'une fonction.