Computer >> Máy Tính >  >> Lập trình >> lập trình C

Liên hiệp cấu trúc trong ngôn ngữ C là gì?

Liên hợp là một vị trí bộ nhớ được chia sẻ bởi một số biến của các kiểu dữ liệu khác nhau trong ngôn ngữ lập trình C.

Cú pháp

Cú pháp của cấu trúc union như sau -

union uniontag{
   datatype member 1;
   datatype member 2;
   ----
   ----
   datatype member n;
};

Ví dụ

Ví dụ sau đây cho thấy cách sử dụng cấu trúc union -

union sample{
   int a;
   float b;
   char c;
};

Khai báo biến liên hợp

Sau đây là phần khai báo cho biến union. Nó có ba loại như sau -

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 liên minh được khai báo, trình biên dịch sẽ tự động tạo kiểu biến có kích thước lớn nhất để giữ các biến trong liên hợp.

  • Tại bất kỳ thời điểm nào, chỉ một biến có thể được tham chiếu.

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

  • Cú pháp cấu trúc tương tự được sử dụng để truy cập một thành viên liên hiệp.

  • Toán tử dấu chấm dùng để truy cập thành viên.

  • Toán tử mũi tên (->) được sử dụng để truy cập các thành viên bằng con trỏ.

Chương trình mẫu 1

Chương trình sau đây cho thấy cách sử dụng cấu trúc union.

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);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

a = garbage value
b = garbage value
c = A

Liên hợp các cấu trúc

  • Một cấu trúc có thể được lồng vào bên trong một liên minh và nó được gọi là liên hợp các cấu trúc.

  • Có thể tạo liên hợp bên trong một cấu trúc.

Chương trình mẫu 2

Một chương trình C khác hiển thị cách sử dụng cấu trúc union được đưa ra dưới đây -

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);
}

Đầu ra

Khi chương trình trên được thực thi, nó tạo ra kết quả sau -

a= 10
b = 30.5