ยูเนี่ยนคือตำแหน่งหน่วยความจำที่ใช้ร่วมกันโดยตัวแปรหลายตัวของประเภทข้อมูลที่แตกต่างกันในภาษาการเขียนโปรแกรม 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