Bảng so sánh chi tiết:
| STT | Structure (struct) | Union (union) |
|---|---|---|
| 1 | Định nghĩa: Tập hợp các dữ liệu khác kiểu nhóm dưới một tên. | Định nghĩa: Vùng nhớ dùng chung cho nhiều biến khác kiểu. |
| 2 | Cú pháp: struct ten { kieu ten; ... }; |
Cú pháp: union ten { kieu ten; ... }; |
| 3 | Ví dụ: struct { int a; float b; char c; }; |
Ví dụ: union { int a; float b; char c; }; |
| 4 | Từ khóa: struct |
Từ khóa: union |
| 5 | Cấp phát bộ nhớ | |
| 6 | Mỗi thành viên có địa chỉ riêng. Tổng kích thước = tổng kích thước các thành viên (có padding). | Tất cả thành viên chia sẻ cùng một địa chỉ. Kích thước = kích thước thành viên lớn nhất. |
| 7 | Ví dụ: struct { double a; int b; char c; float d; } → ~24 byte (tùy padding). | Ví dụ: union { double a; int b; char c; float d; } → 8 byte (kích thước double). |
Chương trình minh họa Structure
#include <stdio.h>
struct size {
double a;
int b;
char c;
float d;
};
int main() {
printf("Kich thuoc struct = %zu byte\n", sizeof(struct size));
return 0;
}
Kết quả
Kich thuoc struct = 24 byte
Chương trình minh họa Union
#include <stdio.h>
union size {
double a;
int b;
char c;
float d;
};
int main() {
printf("Kich thuoc union = %zu byte\n", sizeof(union size));
return 0;
}
Kết quả
Kich thuoc union = 8 byte