Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Khác biệt giữa Structure và Union trong C


Tổng quan

Trong C, ta có container cho cả dữ liệu cùng kiểu và khác kiểu. Để lưu trữ dữ liệu cùng kiểu, C cung cấp Array; còn để lưu trữ dữ liệu khác kiểu, C có Structure và Union.

Mặc dù cả Structure và Union đều chứa nhiều kiểu dữ liệu, nhưng dựa trên triển khai nội bộ, chúng có những khác biệt quan trọng:

STT Tiêu chí Structure Union
1 Định nghĩa Structure là container trong C lưu trữ biến khác kiểu, cũng hỗ trợ lưu biến do người dùng định nghĩa. Union cũng là container tương tự, chứa các biến khác kiểu và biến do người dùng định nghĩa.
2 Triển khai nội bộ Mỗi thành viên (member) được cấp phát vùng nhớ riêng biệt. Chỉ cấp phát bộ nhớ cho thành viên có kích thước lớn nhất, và vùng nhớ này được chia sẻ cho tất cả các thành viên.
3 Cú pháp
struct ten_struct {
    kieu thanh_vien1;
    kieu thanh_vien2;
    ...
} bien1, bien2, ...;
union ten_union {
    kieu thanh_vien1;
    kieu thanh_vien2;
    ...
} bien1, bien2, ...;
4 Kích thước (Size) Kích thước Structure bằng hoặc lớn hơn tổng kích thước tất cả các thành viên (do padding/alignment). Kích thước Union bằng kích thước của thành viên lớn nhất.
5 Lưu trữ giá trị Có vùng nhớ riêng cho từng thành viên → lưu trữ được nhiều giá trị cùng lúc. Chỉ có một vùng nhớ chung → chỉ lưu trữ được một giá trị tại một thời điểm cho tất cả thành viên.
6 Khởi tạo (Initialization) Có thể khởi tạo nhiều thành viên cùng lúc. Chỉ có thể khởi tạo thành viên đầu tiên tại một thời điểm.