Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พอยน์เตอร์ไปยัง Union ในภาษา C

ความเข้าใจเกี่ยวกับ Union

Union เป็นตำแหน่งหน่วยความจำที่ถูกใช้ร่วมกันโดยตัวแปรหลายตัวที่มีชนิดข้อมูลต่างกัน ในเวลาใดเวลาหนึ่ง จะมีเพียงสมาชิก (member) เพียงตัวเดียวที่เก็บค่าได้

ไวยากรณ์ (Syntax)

union uniontag {
    datatype member1;
    datatype member2;
    // ...
    datatype memberN;
};

ตัวอย่างการประกาศ Union

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

การเข้าถึงสมาชิกผ่าน Pointer

ใช้งานคล้ายโครงสร้าง (structure) แต่ใช้ตัวดำเนินการลูกศร (arrow operator ->) แทนจุด (dot operator)

ตัวอย่างโปรแกรม: การใช้ Pointer กับ Union

#include <stdio.h>
union pointer {
    int num;
    char a;
};
int main() {
    union pointer p1;
    p1.num = 75;
    // p2 เป็น pointer ไปยัง union p1
    union pointer *p2 = &p1;
    // เข้าถึงสมาชิกผ่าน pointer
    printf("%d %c", p2->num, p2->a);
    return 0;
}

ผลลัพธ์

75 K

คำอธิบาย: ค่า 75 ในรูปแบบ integer เมื่อถูกอ่านเป็น char จะได้ค่า ASCII 75 ซึ่งคือตัวอักษร 'K'

ตัวอย่างเพิ่มเติม

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

ผลลัพธ์

90 Z

คำอธิบาย: ค่า 90 ใน ASCII คือตัวอักษร 'Z' แสดงให้เห็นว่า union ใช้พื้นที่หน่วยความจำร่วมกันจริง