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

Union của Structure (Union of Structures) trong C


Khi một structure được lồng bên trong một union, gọi là union của structures. Ngược lại, cũng có thể tạo union bên trong structure.

Ví dụ 1: Structure trong Union

#include <stdio.h>
struct x {
    int a;
    float b;
};
union z {
    struct x s;
};
int main() {
    union z u;
    u.s.a = 10;
    u.s.b = 30.5;
    printf("a=%d\n", u.s.a);
    printf("b=%f\n", u.s.b);
    return 0;
}

Kết quả

a=10
b=30.500000

Ví dụ 2: Union đơn giản (demo chia sẻ bộ nhớ)

#include <stdio.h>
union abc {
    int a;
    char b;
} v;
int main() {
    v.a = 90;
    union abc *p = &v;
    printf("a=%d\n", v.a);     // 90
    printf("b=%c\n", v.b);     // 'Z' (ASCII 90)
    printf("a=%d b=%c\n", p->a, p->b);
    printf("Kich thuoc union = %zu byte\n", sizeof(union abc)); // 4
    return 0;
}

Kết quả

a=90
b=Z
a=90 b=Z
Kich thuoc union = 4 byte

Lưu ý: Union chia sẻ cùng một vùng nhớ cho tất cả thành viên. Kích thước union = kích thước thành viên lớn nhất.