2016-02-28 1 views
-3

Est-il possible de déclarer un tableau de syndicats?Un ensemble de syndicats est-il valide ou invalide?

Si oui, en quoi est-ce différent d'un ensemble de structures normal?

+6

L'AVEZ-VOUS ESSAYÉ? –

+5

@MartinJames "juste essayer" n'est pas un bon moyen de savoir si les choses sont légales en C. Après tout, un comportement indéfini semble souvent fonctionner comme vous l'attendez, jusqu'à ce que ce ne soit pas le cas. – fuz

+0

Si le compilateur permet de déclarer la matrice d'union, il est BEAUCOUP moins probable qu'une telle structure produise UB. –

Répondre

4

Oui, c'est possible. Techniquement, il n'y a pas de différence, c'est juste un morceau de mémoire continu avec chaque élément représentant une union. C'est exactement la même chose pour la structure ou tout autre type. Chaque élément prend la même taille que la taille d'une union ou d'une structure.

7

Oui, très possible (mais peut-être inhabituel). La différence entre un struct et un syndicat est qu'un struct contient tous ses membres, tandis qu'un union ne contient qu'un membre à la fois.

Les membres du groupe seront toujours assez grands pour contenir le plus grand membre du syndicat.