• 0

ما الفرق بين union و struct في C؟

هل هناك فرق بين استخدام struct و union في لغة C لأنني لاحظت أنهما لا يختلفان من ناحية التعريف والاستخدام 

union myUnion{         
   string a[32];
   float salary;
   int average;
}
struct myStruct{
   string a[32];
   float average;
   int number;
}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

union هي أحد بنى المعطيات في لغة C وهي مماثلة تمامًا للهياكل Structure وتعرّف بنفس الطريقة التي يعرّف بها الـ struct 

union car{
  char name[50];
  int price;
};

وكذلك المتغيرات من نوع union تُنشأ بشكل مماثل للمتغيرات من نوع struct 

union car{
  char name[50];
  int price;
}c1, c2, *c3;

OR;

union car{
  char name[50];
  int price;
};
-------Inside Function-----------
union car c1, c2, *c3;

الفرق بين union و struct هو في تخصيص الذاكرة بينهما فمقدار الذاكرة المطلوبة لتخزين متغير من نوع struct هو مجموع حجم الذاكرة لجميع الأعضاء members في المتغير struct، بينما الذاكرة المطلوبة لتخزين متغير من نوع union هو مقدار الذاكرة المطلوبة لأكبر عنصر في المتغير union.

 

المثال التالي يوضح بشكل كبير الفرق بين حجم الذاكرة المطلوبة لتخزين متغير struct وحجم الذاكرة المطلوبة لتخزين متغير union:

#include <stdio.h>
union job {         //defining a union
   char name[32];
   float salary;
   int worker_no;
}u;
struct job1 {
   char name[32];
   float salary;
   int worker_no;
}s;
int main(){
   printf("size of union = %d",sizeof(u));
   printf("\nsize of structure = %d", sizeof(s));
   return 0;
}

النتيجة:

size of union = 32
size of structure = 40

حجم الذاكرة المطلوبة للمتغير struct في المثال أعلاه:

struct.thumb.png.c8371bb0c471fb75c7a2386

حجم الذاكر المطلوبة للمتغير union في المثال أعلاه:

union.thumb.png.d842fe11ca0530e3d97c3650

ما الفرق بين union و struct في C؟

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن