Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

อธิบายคำแนะนำไปยังสหภาพแรงงานในภาษาซี


ยูเนี่ยนคือตำแหน่งหน่วยความจำที่ใช้ร่วมกันโดยตัวแปรหลายตัวของประเภทข้อมูลที่แตกต่างกัน

ไวยากรณ์

ไวยากรณ์สำหรับตัวชี้ไปยังสหภาพในการเขียนโปรแกรม 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