« Programmation C++/Les structures » : différence entre les versions
source |
+ pointeur vers les structures |
||
Ligne 20 : | Ligne 20 : | ||
=== Exemple === |
=== Exemple === |
||
L'exemple ci-dessous illustre l'utilisation d'une structure nommée <tt>Point</tt> comportant deux champs (appelées également variables membres) <tt>x</tt> et <tt>y</tt> de type <tt>double</tt>. |
L'exemple ci-dessous illustre l'utilisation d'une structure nommée <tt>Point</tt> comportant deux champs (appelées également variables membres) <tt>x</tt> et <tt>y</tt> de type <tt>double</tt>. |
||
<source lang="cpp"> |
<source lang="cpp"> |
||
Ligne 54 : | Ligne 56 : | ||
Les variables <tt>A</tt> et <tt>B</tt> sont deux structures de type <tt>Point</tt>. |
Les variables <tt>A</tt> et <tt>B</tt> sont deux structures de type <tt>Point</tt>. |
||
L'accés à un champ d'une structure se fait par l'opérateur point ( <tt>.</tt> ) séparant la variable structure du nom du membre accédé. |
L'accés à un champ d'une structure se fait par l'opérateur point ( <tt>.</tt> ) séparant la variable structure du nom du membre accédé. |
||
=== Pointeur vers une structure === |
|||
On peut écrire naturellement |
|||
<source lang="cpp"> |
|||
Point* pA; |
|||
cout << "Tapez l'abscisse de A : "; cin >> (*pA).x; |
|||
cout << "Tapez l'ordonnée de A : "; cin >> (*pA).y; |
|||
</source> |
|||
Pour faciliter la lecture et éviter les erreurs, on utilise l'opérateur <code>-></code>. On peut écrire <code>pA->x</code> à la place de <code>(*pA).x</code>. Attention, <code>*pA.x</code> donne une erreur de compilation, à cause de la [[Programmation C++/Les opérations de base#La liste complète des opérateurs du C++|priorité des opérateurs]]. |
|||
[[Catégorie:Programmation C++ (livre)]] |
[[Catégorie:Programmation C++ (livre)]] |
Version du 12 septembre 2008 à 17:15
Les structures
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.