Latest web development tutorials

الاتحاد C

الاتحاد هو نوع خاص من البيانات، مما يسمح لك إلى موقع آخر في نفس النوع من البيانات المخزنة في الذاكرة.يمكنك تعريف الاتحاد مع عدد أكبر من الأعضاء، لكن في أي وقت يمكن أن يكون هناك عضو واحد فقط مع القيمة. تقدم النقابات وسيلة لاستخدام نفس موقع الذاكرة بطريقة فعالة.

تعريف الاتحاد

لتعريف الاتحاد، يجب عليك استخدام عباراتالنقابة، وتحديد الهيكل بطريقة مماثلة.بيان الاتحاد يحدد نوع البيانات الجديد، مع عدد وافر من الأعضاء. شكل بيان الاتحاد على النحو التالي:

union [union tag]
{
   member definition;
   member definition;
   ...
   member definition;
} [one or more union variables];  

العلامة الاتحاد اختيارية، كل تعريف العضو هو تعريف موحد للمتغير، مثل كثافة العمليات ط؛ أو تطفو و، أو غيرها من التعريفات المتغيرة صالحة.قبل نهاية الفاصلة المنقوطة النهائية هيئة مشتركة محددة، يمكنك تحديد واحد أو أكثر من المتغيرات الاتحاد، الذي هو اختياري. التعريف التالي للنوع الجسم مشترك اسمه البيانات، وهناك ثلاثة أعضاء I، F وشارع:

union Data
{
   int i;
   float f;
   char  str[20];
} data;  

الآن، يمكن للنوعالبيانات متغير تخزين عدد صحيح، تعويم، أو سلسلة.وهذا يعني أن المتغير (نفس موقع الذاكرة) يمكن تخزين عدد وافر من أنواع مختلفة من البيانات. يمكنك استخدام أي نوع من أنواع البيانات المضمنة أو المعرفة في هيئة مشتركة حسب الحاجة.

يجب أن يكون الاتحاد ما يكفي من ذاكرة التخزين من قبل أكبر عضو في اتحاد المحتلة. على سبيل المثال، في المثال أعلاه، سوف البيانات تحتل 20 بايت من مساحة الذاكرة، لأن كل عضو، الحيز الذي سلسلة المحتلة هو أعظم. المثال التالي سوف تظهر الاتحاد أعلاه احتل اجمالى حجم الذاكرة:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   printf( "Memory size occupied by data : %d\n", sizeof(data));

   return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

Memory size occupied by data : 20

عضو في النقابة وصول

من أجل الوصول إلى البلدان الأعضاء المشتركة، ونحن نستخدمالمشغل وصول أعضاء (.).مشغل وصول العضو من فترة أسماء المتغيرات وأعضاء النقابات اتحادنا يمكن الوصول إليها بين. يمكنك استخدام الكلمة لتحديد المتغيرات نوع اتحادالنقابات.يوضح المثال التالي استخدام الاتحاد:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   data.f = 220.5;
   strcpy( data.str, "C Programming");

   printf( "data.i : %d\n", data.i);
   printf( "data.f : %f\n", data.f);
   printf( "data.str : %s\n", data.str);

   return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

data.i : 1917853763
data.f : 4122360580327794860452759994368.000000
data.str : C Programming

هنا يمكننا أن نرى قيمط والاتحاد وأعضاء معطوبة، لأن القيم المخصصة لمتغيرات موقع الذاكرة المحتلة الماضي، والتي هي أعضاءشارعالسبب لإخراج سليمة. الآن دعونا ننظر في واحدة ونفس المثال، وهذه المرة نستخدم متغير واحد فقط في نفس الوقت، فإنه يوضح أيضا أن الغرض الرئيسي من استخدام الاتحاد:

#include <stdio.h>
#include <string.h>
 
union Data
{
   int i;
   float f;
   char  str[20];
};
 
int main( )
{
   union Data data;        

   data.i = 10;
   printf( "data.i : %d\n", data.i);
   
   data.f = 220.5;
   printf( "data.f : %f\n", data.f);
   
   strcpy( data.str, "C Programming");
   printf( "data.str : %s\n", data.str);

   return 0;
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

data.i : 10
data.f : 220.500000
data.str : C Programming

هنا، جميع أعضاء يمكن إخراج سليمة، لأنه في نفس الوقت يستخدم عضو واحد فقط.