Les structures C++

Les structures

Déclaration d’un type structure et des variables de ce type C++ permet de déclarer un type structure, de cette manière : struct enreg { int numero ; int qte ; float prix ; } ; Cette déclaration définit un type (modèle) de structure mais ne réserve pas de variables correspondant à cette structure. Ce type s’appelle ici enreg et il précise le nom et le type de chacun des champs constituant la structure (numero, qte et prix). Une fois un tel type de structure défini, nous pouvons déclarer des variables du type correspondant. Par exemple, l’instruction : enreg art1, art2 ; réserve deux emplacements nommés art1 et art2, de type enreg, destinés à contenir chacun deux entiers et un flottant. Les champs d’une structure peuvent être de n’importe quel type de base, d’un type tableau ou structure. De même, les éléments d’un tableau peuvent être d’un type structure. Utilisation d’une (variable de type) structure Un champ d’une structure peut être manipulé comme n’importe quelle variable du type correspondant. On désigne un champ donné en faisant suivre le nom de la variable structure de l’opérateur « point » (.), suivi du nom de champ, comme dans ces exemples utilisant les déclarations précédentes : art1.numero // champ numero de la structure art1 art2.prix // champ prix de la structure art2 Contrairement au tableau, une variable de type structure peut être affectée à une variable de même type (même nom de modèle). Initialisation des structures Les structures de classe automatique ne sont pas initialisées par défaut. Celles de classe statique voient leurs champs initialisés à « zéro » (entier nul, flottant nul, caractère de code nul, pointeur nul). En toute rigueur, cette règle s’applique aux champs qui sont des scalaires ou des tableaux de scalaires. Si certains champs sont eux-mêmes des structures, la règle s’appliquera à chacun de leurs champs, et ainsi de suite. À l’instar d’un tableau, une structure peut être initialisée lors de sa déclaration, comme dans cette instruction qui utilise le type enreg défini précédemment : enreg art1 = { 100, 285, 200 } ; On peut omettre certaines valeurs.

Exercice

. Voici la fonction demandée : void affiche (point p) { cout << « point  » << p.c <<  » de coordonnées  » << p.x <<  »  » < using namespace std ; struct point { char c ; int x, y ; } ; void affiche (point p) { cout << « point  » << p.c <<  » de coordonnées  » << p.x <<  »  » < using namespace std ; struct point { char c ; int x, y ; } ; void affiche (point * adp) { cout << « point  » << adp->c <<  » de coordonnées  » << adp->x <<  »  » << adp->y ; } main() { void affiche (point *) ; point s ; s.c = ‘A’ ; s.x = 10 ; s.y = 12 ; affiche (&s) ; } Notez que l’on doit, cette fois, faire appel à l’opérateur ->, à la place de l’opérateur « point » (.), puisque l’on travaille avec un pointeur sur une structure, et non plus avec la valeur de la structure elle-même. Toutefois l’usage de -> n’est pas totalement indispensable, dans la mesure où, par exemple, adp->x est équivalent à (*adp).x. c. Voici la troisième fonction demandée, accompagnée de son programme de test : #include using namespace std ; struct point { char c ; int x, y ; } ; void affiche (point & p) { cout << « point  » << p.c <<  » de coordonnées  » << p.x <<  »  » << p.y ; } main() { void affiche (point &) ; point s ; s.c = ‘A’ ; s.x = 10 ; s.y = 12 ; affiche (s) ; }

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *