union [union tag] { member definition; member definition; ... member definition; } [one or more union variables];
union Data { int i; float f; char str[20]; } data;
[dywang@dyw219 zzz]$ vim union1.c [dywang@dyw219 zzz]$ cat union1.c #include <stdio.h> union Data { int i; float f; char str[20]; }; int main () { union Data data; printf( "sizeof(data) = %d\n", sizeof(data)); return 0; }
[dywang@dyw219 zzz]$ gcc -o union1 union1.c
char str[20]
佔用 20 個位元組,所以 union data 佔用 20 個位元組。
[dywang@dyw219 zzz]$ ./union1 sizeof(data) = 20