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