Union là một vị trí bộ nhớ được chia sẻ bởi nhiều biến có kiểu dữ liệu khác nhau.
Cú pháp
Cú pháp cho con trỏ tới union trong C:
union uniontag {
datatype member1;
datatype member2;
----
----
datatype member n;
};
Ví dụ
Ví dụ sau minh họa việc sử dụng union của cấu trúc:
union sample {
int a;
float b;
char c;
};
Khai báo biến union
Khai báo biến union có 3 loại:
Loại 1
union sample {
int a;
float b;
char c;
} s;
Loại 2
union {
int a;
float b;
char c;
} s;
Loại 3
union sample {
int a;
float b;
char c;
};
union sample s;
- Khi khai báo union, trình biên dịch tự động tạo biến có kích thước lớn nhất để chứa các biến trong union.
- Chỉ có một biến được tham chiếu tại một thời điểm.
- Cú pháp giống cấu trúc được dùng để truy cập thành viên union.
- Toán tử chấm (.) dùng để truy cập thành viên.
- Toán tử mũi tên (->) dùng để truy cập thành viên qua con trỏ.
Chúng ta có con trỏ tới union và có thể truy cập thành viên bằng toán tử mũi tên (->) như cấu trúc.
Ví dụ 1
Chương trình sau minh họa sử dụng con trỏ tới union:
#include <stdio.h>
union pointer {
int num;
char a;
};
int main() {
union pointer p1;
p1.num = 75;
// p2 là con trỏ tới union p1
union pointer* p2 = &p1;
// Truy cập thành viên union qua con trỏ
printf("%d %c", p2->num, p2->a);
return 0;
}
Kết quả
75 K
Ví dụ 2
Cùng ví dụ với đầu vào khác:
#include <stdio.h>
union pointer {
int num;
char a;
};
int main() {
union pointer p1;
p1.num = 90;
union pointer* p2 = &p1;
printf("%d %c", p2->num, p2->a);
return 0;
}
Kết quả
90 Z