Il est possible d’affecter une structure dans sa globalité :
structure_A = structure_B ;
Le code ci-dessus recopie tous les champs de structure_B
dans structure_A
.
Il n'est pas possible de comparer deux structures avec l'opérateur ==
.
// NE COMPARE PAS LES STRUCTURES
if (structure_A == structure_B)...
Pour tester si deux structures sont identiques, il faut tester chaque champ individuellement.
La portée des structure est identique aux variables :
Il est possible de connaître la taille d'une structure en mémoire grâce à
l'instruction sizeof()
. Attention, la taille d'une structure n'est pas
toujours égale à la somme de la taille de ses champs. Sans rentrer dans les
détails, l'alignement mémoire
permet d'augmenter la vitesse d'exécution.
Créer une structure vector
qui contient 3 champs à double précision x
, y
et z
. Créer une variable v
de type structure et afficher la taille
vector
;v
;Voici la sortie escomptée :
Taille de struct vector : 24 octets Taille de la variable v : 24 octets Taille de v.x : 8 octets Taille de v.y : 8 octets Taille de v.z : 8 octets
On fournit la structure circle
ci-dessous :
struct circle {
int cx,cy; // Centre
double radius; // Rayon
};
Déclarer une variable C1
pour un cercle de centre (2,4) et de rayon 2,5. Copiez le
cercle dans une nouvelle variable C2
préalablement déclarée.
Vérifiez que la copie s'est correctement déroulée (C1 égal C2) et que les variables
C1
et C2
on bien deux adresses distinctes :
Cercle C1 de rayon 2.50 et de centre (2,4) Cercle C2 de rayon 2.50 et de centre (2,4) Les structures sont bien identiques Adresse de C1 : 0x7ffe15de74d8 Adresse de C2 : 0x7ffe15de74c8
Pour copier une variable de type structure dans une autre ...
Pour vérifier que des variables de type structure sont identiques ...
==
ne fonctionne pas sur les structures, il faut comparer les champs individuellement. Toutefois, ici, il faudra dans tous les cas 16 octets minimum.
Essaie encore ...
Quelle est la taille de la structure ci-dessous ?
// Structure circle
struct circle {
int cx,cy; // Centre
double radius; // Rayon
};