ยูเนี่ยนคือตำแหน่งหน่วยความจำที่ใช้ร่วมกันโดยตัวแปรหลายตัวของประเภทข้อมูลที่แตกต่างกัน
ไวยากรณ์
ไวยากรณ์สำหรับตัวชี้ไปยังสหภาพในการเขียนโปรแกรม 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;
-
เมื่อมีการประกาศสหภาพ คอมไพเลอร์จะสร้างประเภทตัวแปรขนาดที่ใหญ่ที่สุดโดยอัตโนมัติเพื่อเก็บตัวแปรไว้ในสหภาพ
-
เมื่อใดก็ตามที่สามารถอ้างอิงตัวแปรได้เพียงตัวเดียว
-
ไวยากรณ์เดียวกันของโครงสร้างจะใช้ในการเข้าถึงสมาชิกของสหภาพ
-
ตัวดำเนินการจุดมีไว้สำหรับการเข้าถึงสมาชิก
-
ตัวดำเนินการลูกศร ( ->) ใช้สำหรับเข้าถึงสมาชิกโดยใช้ตัวชี้
เรามีคำแนะนำไปยังสหภาพแรงงานและสามารถเข้าถึงสมาชิกได้โดยใช้ตัวดำเนินการลูกศร (->) เช่นเดียวกับโครงสร้าง
ตัวอย่าง
โปรแกรมต่อไปนี้แสดงการใช้พอยน์เตอร์เพื่อยูเนี่ยนในการเขียนโปรแกรม C -
#include <stdio.h> union pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 75; // p2 is a pointer to union p1 union pointer* p2 = &p1; // Accessing union members using pointer printf("%d %c", p2->num, p2->a); return 0; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
75 K
ตัวอย่างที่ 2
ลองพิจารณาตัวอย่างเดียวกันโดยใช้ข้อมูลที่ต่างกัน
#include <stdio.h> union pointer { int num; char a; }; int main(){ union pointer p1; p1.num = 90; // p2 is a pointer to union p1 union pointer* p2 = &p1; // Accessing union members using pointer printf("%d %c", p2->num, p2->a); return 0; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
90 Z