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

Giải thích con trỏ tới union trong ngôn ngữ C


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.

Cú pháp

Cú pháp cho con trỏ tới union trong 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.
  • 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 ta có con trỏ tới union và có thể truy cập thành viên bằng toán tử mũi tên (->) như cấu trúc.

Ví dụ 1

Chương trình sau minh họa sử dụng con trỏ tới union:

#include <stdio.h> 
union pointer { 
    int num; 
    char a; 
}; 
int main() { 
    union pointer p1; 
    p1.num = 75; 
    // p2 là con trỏ tới union p1 
    union pointer* p2 = &p1; 
    // Truy cập thành viên union qua con trỏ 
    printf("%d %c", p2->num, p2->a); 
    return 0; 
}

Kết quả

75 K

Ví dụ 2

Cùng ví dụ với đầu vào khác:

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

Kết quả

90 Z