Union
Union cho phép một phần bộ nhớ có thể được truy xuất dưới dạng nhiều kiểu
dữ liệu khác nhau mặc dù tất cả chúng đều nằm cùng một vị trí trong bộ nhớ.
Phần khai báo và sử dụng nó tương tự với cấu trúc nhưng chức năng thì khác
hoàn toàn:
union model_name {
type1 element1;
type2 element2;
type3 element3;
.
.
}object_name;
Tất cả các phần tử của union đều chiếm cùng một chỗ trong bộ nhớ. Kích thước
của nó là kích thước của phần tử lớn nhất. Ví dụ:
union mytypes_t {
char c;
int i;
float f;
} mytypes;
định nghĩa ba phần tử
mytypes.c
mytypes.i
mytypes.f
mỗi phần tử có một kiểu dữ liệu khác nhau. Nhưng vì tất cả chúng đều nằm
cùng một chỗ trong bộ nhớ nên bất kì sự thay đổi nào đối với một phần tử sẽ
ảnh hưởng tới tất cả các thành phần còn lại.
Một trong những công dụng của union là dùng để kết hợp một kiểu dữ liêu cơ
bản với một mảng hay các cấu trúc gồm các phần tử nhỏ hơn. Ví dụ:
union mix_t{
long l;