.)
Les pointeurs de structure fonctionnent sur la même syntaxe que les variables :
struct vector v;
struct vector * adresse = &v;
Le pointeur contiendra l'adresse du premier champs de la structure. Lorsque l'on incrémente un pointeur de structure, on avance le pointeur de la taille de la structure (qui n'est pas forcement égale à la somme des tailles des champs).
L'accès aux champs de la structure peut se faire avec la syntaxe classique des pointeurs en respectant la priorité des opérateurs :
(*ptr).champ
Mais il existe une syntaxe plus conviviale qui utilise l'opérateur ->
:
ptr->champ
Cette syntaxe est à privilégier, mais ne peut être utilisée qu'avec un pointeur de structure.
Remarque : cette syntaxe est importante car elle est très utilisée en C++ pour les pointeurs de classe. Une classe en C++ est une extension des structures en C qui contient des fonctions en plus des champs.
Le code suivant crée un pointeur de structure et affecte une valeur à chaque champ selon les deux syntaxes présentées ci-dessus :
// Déclare un vecteur et un pointeur de vecteur
struct vector vec;
struct vector * ptr = &vec;
// Syntaxe des pointeurs classiques
(*ptr).x = 1.2;
// Syntaxe des pointeurs de structure
ptr->y = 2.4;
Ecrire le code de la fonction homothetie()
qui réalise une homothètie d'un pointeur de
sur un vecteur passé en argument. Le second paramètre de la fonction est le facteur
d'homothétie. Pour rappel, l'homothétie d'un vecteur \( \vec{v} \) et de facteur \(h\)
est donnée par :
$$ \vec{V} = h \times \vec{v} $$
Voici la sortie escomptée :
Avant : x=1.2 y=3.4 Après : x=2.4 y=6.8
On fournit le code suivant qui récupère l'heure courante locale dans la structure
timeinfo
(de type struct tm
). En vous référant à la documenation,
de la structure tm
complétez le programme pour qu'il affiche l'heure.
// Source : http://www.cplusplus.com/reference/ctime/localtime/
// Récupère l'heure locale dans timeinfo
time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);
Voici un affichage possible :
15:49 29s
Un pointeur de structure pointe vers ...
Quelles syntaxes permettent d'accéder au champ d'un pointeur de structure ?
struct article * ptr;
Quelles syntaxes permettent d'accéder au champ d'un pointeur de structure ?
struct article * ptr;
Lorsque l'on incrémente un pointeur de structure ...