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;
  • เมื่อมีการประกาศสหภาพ คอมไพเลอร์จะสร้างประเภทตัวแปรขนาดที่ใหญ่ที่สุดโดยอัตโนมัติเพื่อเก็บตัวแปรไว้ในสหภาพ

  • สามารถอ้างอิงตัวแปรได้เพียงตัวเดียวเท่านั้นเมื่อใดก็ได้

การเริ่มต้นและการเข้าถึง

  • ไวยากรณ์เดียวกันของโครงสร้างจะใช้ในการเข้าถึงสมาชิกของสหภาพ

  • ตัวดำเนินการจุดมีไว้สำหรับการเข้าถึงสมาชิก

  • ตัวดำเนินการลูกศร ( ->) ใช้สำหรับเข้าถึงสมาชิกโดยใช้ตัวชี้

โปรแกรมตัวอย่าง 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