کاربرد union در c چیست ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

کاربرد union در c چیست ؟

+2 امتیاز
سلام خسته نباشید

دوستان این union توی c کارش چیه ؟

تعریفش مثل struct هستش ؟؟ فرقی هم دارن ؟
سوال شده بهمن 23, 1392  بوسیله ی خمیده (امتیاز 96)   9 17 25
دوباره تگ گذاری شد اسفند 15, 1392 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

union ساختاریه که برای استفاده بهینه از حافظه ساخته شده و به شما اجازه میده که چند تا متغیر رو داخل یک بلاک از جافظه ذخیره کنین .

 

نحوه تعریف union:

 

union name
{
   type name;
   type name;
   ...
   type name;
} [optional union variables];

 

union ها اندازه بزرگترین متغیر داخلشون حافظه می گیرن مثلا اگر 3 تا متغیر داشته باشیم از نوع double int float از اونجایی که double از همه بزرگتره اندازه double حافظه گرفته میشه .

مثال :

#include <stdio.h>

union Data
{
   int i;
   float f;
   double d;
} data;

int main()
{
    printf( "ُSize of data ??  : %d\n", sizeof(data));
    return 0;
}

همون جوری که میبینین کد بالا عدد 8 رو چاپ می کنه یعنی اندازه بزرگترین متغیر داخلش که double هست 8 بایت  حافظه گرفته .
 

union ها می تونن چند تا عضو داشته باشن ولی فقط یکی از اعضاشون می تونن در زمان مشخص  مقدار داشته باشن .

مثال :

#include <stdio.h>

union Data
{
   int i;
   float f;
   double d;
};

int main()
{
    union Data data;
    data.i=7;
    printf( "data.i : %d\n\n\n\n", data.i);

    data.f=7.3;
    printf( "data.i : %d\n", data.i);
    printf( "data.f : %f\n\n\n\n", data.f);

    data.d=7.33232122122;
    printf( "data.i : %d\n", data.i);
    printf( "data.f : %f\n", data.f);
    printf( "data.d : %.15f\n", data.d);

    return 0;
}

خروجی :

 

همون طوری که از خروجی کد بالا مشخصه زمانی که به متغیر d داخل آنیون مقدار میدین i , f هم مقدارشون عوض میشه به خاطر این که هر 3 تا متغیر union از یک بلاک حافظه استفاده می کنن.

پاسخ داده شده بهمن 23, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 5, 1392 بوسیله ی خمیده
...