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

Sự khác biệt giữa Structure và Union trong C


Bảng so sánh chi tiết:

STTStructure (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