« Programmation C++/Les structures » : différence entre les versions
Aucun résumé des modifications |
m Formatage, ajout de code |
||
Ligne 12 : | Ligne 12 : | ||
} ''[variables]''; |
} ''[variables]''; |
||
< |
<code>''identificateur''</code> identifie le nouveau type de données. |
||
Une variable de ce type est donc précédé de < |
Une variable de ce type est donc précédé de <code>struct ''identificateur''</code> ou <code>''identificateur''</code> car le mot <code>struct</code> est optionnel. |
||
< |
<code>''[variables]''</code> est optionnel et permet de déclarer une ou plusieurs variables de ce nouveau type. |
||
== Exemple == |
== Exemple == |
||
L'exemple ci-dessous illustre l'utilisation d'une structure nommée < |
L'exemple ci-dessous illustre l'utilisation d'une structure nommée <code>Point</code> comportant deux champs (appelées également variables membres) <code>x</code> et <code>y</code> de type <code>double</code>. |
||
Ligne 53 : | Ligne 53 : | ||
</source> |
</source> |
||
Les variables < |
Les variables <code>A</code> et <code>B</code> sont deux structures de type <code>Point</code>. |
||
L'accés à un champ d'une structure se fait par l'opérateur point ( < |
L'accés à un champ d'une structure se fait par l'opérateur point ( <code>.</code> ) séparant la variable structure du nom du membre accédé. |
||
== Pointeur vers une structure == |
== Pointeur vers une structure == |
Version du 23 juillet 2017 à 12:23
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.
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.
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é.
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.
Point* pA;
cout << "Tapez l'abscisse de A : "; cin >> pA->x;
cout << "Tapez l'ordonnée de A : "; cin >> pA->y;
Copier une structure
Copier une structure se fait très simplement
#include <iostream>
using namespace std;
struct Point
{
double x;
double y;
};
int main()
{
Point A, B;
A.x = 2.0;
A.y = 3.0;
B = A;
cout << "A a été recopié dans B : " << B.x << ", " << B.y << endl;
return 0;
}