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

Giải thích các con trỏ liên kết bằng ngôn ngữ C

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.

Cú pháp

Cú pháp cho các con trỏ tới các hợp nhất trong lập trình C 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 khai báo liên hợp, 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.

  • 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 tôi có các con trỏ tới các liên hiệp và có thể truy cập các thành viên bằng cách sử dụng toán tử mũi tên (->) giống như cấu trúc.

Ví dụ

Chương trình sau đây cho thấy cách sử dụng con trỏ để liên hợp trong lập trình C -

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 75;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

Đầu ra

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

75 K

Ví dụ 2

Hãy xem xét cùng một ví dụ với đầu vào khác nhau.

#include <stdio.h>
union pointer {
   int num;
   char a;
};
int main(){
   union pointer p1;
   p1.num = 90;
   // p2 is a pointer to union p1
   union pointer* p2 = &p1;
   // Accessing union members using pointer
   printf("%d %c", p2->num, p2->a);
   return 0;
}

Đầu ra

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

90 Z