Programmation C++/Les structures

Un livre de Wikibooks.

Programmation C++
Programmation C++
Sommaire
Liens
Modifier ce modèle

Sections

[modifier] Les structures

[modifier] Présentation

Les structures permettent de regrouper plusieurs variables dans une même entité. Ainsi il est possible de construire de nouveaux types plus complexes.

[modifier] Syntaxe

struct identificateur
{
    // liste des différents champs constituant notre structure
    // utilise la même syntaxe que la déclaration de variables
} [variables];

identificateur identifie le nouveau type de données. Une variable de ce type est donc précédé de struct identificateur ou identificateur car le mot struct est optionnel.

[variables] est optionnel et permet de déclarer une ou plusieurs variables de ce nouveau type.

[modifier] Exemple

L'exemple ci-dessous illustre l'utilisation d'une structure nommée Point comportant deux champs (appelées également variables membres) x et y de type double.


#include <iostream>
#include<cmath>
using namespace std;
 
struct Point
{
    double x;       
    double y; 
};
 
int main()
{
    Point A, B;
    double dx, dy, distance;
 
    cout << "Tapez l'abscisse de A : "; cin >> A.x;
    cout << "Tapez l'ordonnée de A : "; cin >> A.y;
    cout << "Tapez l'abscisse de B : "; cin >> B.x;
    cout << "Tapez l'ordonnée de B : "; cin >> B.y;
 
    dx = A.x - B.x;
    dy = A.y - B.y;
    distance = sqrt( dx*dx + dy*dy );
 
    cout << "La distance AB vaut : " << distance << endl;
 
    return 0;
}

Les variables A et B sont deux structures de type Point. L'accés à un champ d'une structure se fait par l'opérateur point ( . ) séparant la variable structure du nom du membre accédé.

[modifier] Pointeur vers une structure

On peut écrire naturellement

    Point* pA;
    cout << "Tapez l'abscisse de A : "; cin >> (*pA).x;
    cout << "Tapez l'ordonnée de A : "; cin >> (*pA).y;

Pour faciliter la lecture et éviter les erreurs, on utilise l'opérateur ->. On peut écrire pA->x à la place de (*pA).x. Attention, *pA.x donne une erreur de compilation, à cause de la priorité des opérateurs.