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

วัตถุประสงค์ของ Union ใน C/C++

Union เป็น User-defined Data Type ที่ สมาชิกทุกตัวใช้หน่วยความจำร่วมกัน ขนาด Union = ขนาดสมาชิกที่ใหญ่ที่สุด เหมาะสำหรับเก็บค่าที่ใช้สลับกัน เพื่อประหยัดหน่วยความจำ

รูปแบบ

union union_name {
    member_definition;
} union_variables;

ตัวอย่างโค้ด

#include <stdio.h>
#include <string.h>

union Data {
    int i;
    float f;
} data, data1;

int main() {
    printf("Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
    return 0;
}

ผลลัพธ์

Memory size occupied by data : 4 4

กรณีใช้งานจริง

  • Type Punning (เข้าถึงข้อมูลเดียวกันหลายรูปแบบ)
  • Protocol Buffers / Network Packets (Field ที่ไม่ใช้พร้อมกัน)
  • Variant Types (เก็บค่าได้หลายประเภท แต่ทีละประเภท)
  • Embedded Systems ที่จำกัดหน่วยความจำ

ข้อควรระวัง: การเข้าถึงสมาชิกที่ไม่ได้เขียนล่าสุดเป็น Undefined Behavior ใน C มาตรฐาน (ยกเว้นบางกรณีเช่น Common Initial Sequence)