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

Union của cấu trúc (struct) trong ngôn ngữ C là gì?


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 trong ngôn ngữ C.

Cú pháp

Cú pháp cho union của cấu trú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.

Khởi tạo và truy cập

  • 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 trình mẫu 1

Chương trình sau minh họa việc sử dụng union của cấu trúc:

union sample { 
    int a; 
    float b; 
    char c; 
} 
main() { 
    union sample s = {10, 20.5, "A"}; 
    printf("a=%d", s.a); 
    printf("b=%f", s.b); 
    printf("c=%c", s.c); 
}

Kết quả

a = giá trị rác b = giá trị rác c = A

Union của các cấu trúc

  • Một cấu trúc có thể được lồng bên trong một union và được gọi là union của các cấu trúc.
  • Có thể tạo một union bên trong một cấu trúc.

Chương trình mẫu 2

Chương trình C khác minh họa việc sử dụng union của cấu trúc:

struct x { 
    int a; 
    float b; 
}; 
union z { 
    struct x s; 
}; 
main() { 
    union z u; 
    u.s.a = 10; 
    u.s.b = 30.5; 
    printf("a=%d", u.s.a); 
    printf("b=%f", u.s.b); 
}

Kết quả

a= 10 b = 30.5