Comment puis-je accéder aux membres du syndicat qui existent à l’intérieur de la structure?
Considérons l’extrait de code:
struct Emp { char name[20]; union address { char addr[50]; }; }; struct Emp e;
Avec e
, comment puis-je accéder au type addr
sans créer d’object d’union?
Les champs struct / union non identifiés dans structs / unions sont pris en charge dans C11 ainsi que dans l’extension GCC. Si cette fonctionnalité est e.addr
, vous pouvez utiliser directement e.addr
. Notez que le nom de la balise doit être vide non plus.
struct Emp { char name[20]; union { char addr[50]; }; };
Si ce n’est pas pris en charge, vous devez donner un nom au union
et utiliser euaddr
.
struct Emp { char name[20]; union address { char addr[50]; } u; };
Donnez un nom au membre du syndicat:
struct Emp { char name[20]; union { char addr[50]; } address; };
Maintenant, vous pouvez y accéder comme suit:
struct Emp e; e.address.addr;
L’union devrait être nommée en premier
[struct_object_name].[union_name].[union_datamember]
Ici,
struct Emp { char name[20]; union { char addr[50]; } Emp_address; }; struct Emp e;
adresse comme
e.Emp_address.addr