Union of Structures** หมายถึง โครงสร้าง (Struct) ที่ถูกประกาศอยู่ภายใน ยูเนียน (Union) ในภาษา C สามารถสร้าง Union ภายใน Structure ได้เช่นกัน
ตัวอย่างที่ 1: Struct ใน Union
#include <stdio.h>
struct x {
int a;
float b;
};
union z {
struct x s;
};
int main() {
union z u;
u.s.a = 10;
u.s.b = 30.5;
printf("a = %d\n", u.s.a);
printf("b = %.1f\n", u.s.b);
return 0;
}
ผลลัพธ์
a = 10 b = 30.5
ตัวอย่างที่ 2: Union แบบง่าย (แสดงการใช้หน่วยความจำร่วมกัน)
#include <stdio.h>
union abc {
int a;
char b;
} v;
int main() {
v.a = 90;
union abc *p = &v;
printf("a = %d\n", v.a); // 90
printf("b = %c\n", v.b); // 'Z' (ASCII 90)
printf("a = %d, b = %c\n", p->a, p->b); // 90, Z
printf("Size of union = %lu\n", sizeof(union abc)); // 4 bytes
return 0;
}
ผลลัพธ์
a = 90 b = Z a = 90, b = Z Size of union = 4
จุดสำคัญ
- Union ใช้หน่วยความจำร่วมกันสำหรับทุกสมาชิก
- ขนาดของ Union = ขนาดของสมาชิกที่ใหญ่ที่สุด
- ในเวลาเดียวกัน จะมีข้อมูลอยู่ใน Union ได้เพียงสมาชิกเดียว
- การเข้าถึงสมาชิกผ่าน Pointer ใช้
->(Arrow operator)