Kiểu Union
Kiểu union là một kiểu đặc biệt trong ngôn ngữ C cho phép lưu nhiều kiểu dữ liệu khác nhau trong cùng một ô nhớ.
1
2
3
4
5
6
7
8
9
|
union Data {
int i; // 4 bytes
double d; // 8 bytes
};
int main() {
union Data data;
printf("Size = %d", sizeof(data)); // in 8
}
|
Đọc và ghi lên kiểu union
1
2
3
4
5
6
7
8
9
|
int main() {
union Data data;
data.i = 10;
data.d = 22.5;
printf("data.i : %d\n", data.i); // in 0
printf("data.d : %f\n", data.d); // in 22.5
}
|
Dữ liệu khi in giá trị số nguyên (biến i
) là 0
bởi vì giá trị này đã bị giá trị double
ghi đè. Để lấy giá trị số nguyên đúng, chúng ta đọc các giá trị số nguyên này trước khi bị ghi đè bởi giá trị kiểu double
.
1
2
3
4
5
6
7
8
9
|
int main() {
union Data data;
data.i = 10;
printf("data.i : %d\n", data.i); // in 10
data.d = 22.5;
printf("data.d : %f\n", data.d); // in 22.5
}
|