Khi một structure được lồng bên trong một union, gọi là union của structures. Ngược lại, cũng có thể tạo union bên trong structure.
Ví dụ 1: Structure trong Union
#include <stdio.h>
struct x {
int a;
float b;
};
union z {
struct x s;
};
int main() {
union z u;
u.s.a = 10;
u.s.b = 30.5;
printf("a=%d\n", u.s.a);
printf("b=%f\n", u.s.b);
return 0;
}
Kết quả
a=10 b=30.500000
Ví dụ 2: Union đơn giản (demo chia sẻ bộ nhớ)
#include <stdio.h>
union abc {
int a;
char b;
} v;
int main() {
v.a = 90;
union abc *p = &v;
printf("a=%d\n", v.a); // 90
printf("b=%c\n", v.b); // 'Z' (ASCII 90)
printf("a=%d b=%c\n", p->a, p->b);
printf("Kich thuoc union = %zu byte\n", sizeof(union abc)); // 4
return 0;
}
Kết quả
a=90 b=Z a=90 b=Z Kich thuoc union = 4 byte
Lưu ý: Union chia sẻ cùng một vùng nhớ cho tất cả thành viên. Kích thước union = kích thước thành viên lớn nhất.