ยูเนี่ยนคือตำแหน่งหน่วยความจำที่ใช้ร่วมกันโดยตัวแปรหลายตัวของประเภทข้อมูลที่แตกต่างกันในภาษาการเขียนโปรแกรม C
ไวยากรณ์
ไวยากรณ์สำหรับยูเนียนของโครงสร้างมีดังนี้ −
union uniontag{
datatype member 1;
datatype member 2;
----
----
datatype member n;
}; ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้ยูเนียนของโครงสร้าง −
union sample{
int a;
float b;
char c;
}; การประกาศตัวแปรยูเนียน
ต่อไปนี้เป็นการประกาศตัวแปรยูเนียน แบ่งเป็น 3 ประเภท ดังนี้ −
แบบที่ 1
union sample{
int a;
float b;
char c;
}s; แบบที่ 2
union{
int a;
float b;
char c;
}s; แบบที่ 3
union sample{
int a;
float b;
char c;
};
union sample s; -
เมื่อมีการประกาศสหภาพ คอมไพเลอร์จะสร้างประเภทตัวแปรขนาดที่ใหญ่ที่สุดโดยอัตโนมัติเพื่อเก็บตัวแปรไว้ในสหภาพ
-
สามารถอ้างอิงตัวแปรได้เพียงตัวเดียวเท่านั้นเมื่อใดก็ได้
การเริ่มต้นและการเข้าถึง
-
ไวยากรณ์เดียวกันของโครงสร้างจะใช้ในการเข้าถึงสมาชิกของสหภาพ
-
ตัวดำเนินการจุดมีไว้สำหรับการเข้าถึงสมาชิก
-
ตัวดำเนินการลูกศร ( ->) ใช้สำหรับเข้าถึงสมาชิกโดยใช้ตัวชี้
โปรแกรมตัวอย่าง 1
โปรแกรมต่อไปนี้แสดงการใช้ยูเนียนของโครงสร้าง
union sample{
int a;
float b;
char c;
}
main ( ){
union sample s = {10, 20.5, "A"};
printf("a=%d",s.a);
printf("b=%f",s.b);
printf("c=%c",s.c);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
a = garbage value b = garbage value c = A
การรวมโครงสร้าง
-
โครงสร้างสามารถซ้อนกันภายในสหภาพและเรียกว่าการรวมกันของโครงสร้าง
-
สามารถสร้างสหภาพภายในโครงสร้างได้
โปรแกรมตัวอย่าง 2
โปรแกรม C อื่นที่แสดงการใช้ยูเนี่ยนของโครงสร้างได้รับด้านล่าง -
struct x{
int a;
float b;
};
union z{
struct x s;
};
main ( ){
union z u;
u.s.a = 10;
u.s.b = 30.5;
printf("a=%d", u.s.a);
printf("b=%f", u.s.b);
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
a= 10 b = 30.5