اذهب إلى المحتوى

السؤال

نشر

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

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

 

Recommended Posts

  • 1
نشر

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؟

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...