آموزش C

مباحث پایه زبان C

union در زبان C – آموزش زبان C

  • سه شنبه ۱۰ مهر ۱۳۹۷
  • بازدید ۴,۱۲۳ نفر

تصویر c-unions_4149 union در زبان C - آموزش زبان C

union در زبان C

Union یک نوع داده خاص در زبان برنامه نویسی C می باشد که به ما امکان ذخیره سازی انواع داده های مختلف در یک محل از حافظه را می دهد. شما می توانید یک union را با تعداد زیادی عضو تعریف کنید، اما فقط یکی از این عضوها می تواند مقدار داشته باشد. در ادامه این موضوع را بهتر درک خواهید کرد. union ها یک روش کارآمد برای استفاده از یک محل حافظه برای چند هدف ارائه می دهند.

تعریف یک union

تعریف یک union مشابه تعریف یک ساختار در زبان C است. شکل کلی تعریف یک union را در زیر مشاهده می کنید:

بخش union tag اختیاری است و تعریف عضوهای union مانند تعریف متغیرهای عادی می باشد. بعد از } و قبل از سمی کالن می توانید متغیرهای خود را که از نوع union شما خواهند را تعریف کنید. در مثال زیر یک union با نام Data که شامل سه عضو است تعریف شده است:

حال یک متغیر از نوع Data می تواند یک عدد صحیح، یک عدد اعشاری و یا یک رشته را در خود ذخیره کند. به این معنی که یک محل از حافظه برای ذخیره سازی چندین نوع داده مختلف استفاده می شود. میزان حافظه ای که توسط یک union اشغال می شود، برابر با اندازه بزرگ ترین عضو union خواهد بود. در مثال بالا میزان حافظه اشغالی توسط Data به اندازه بزرگ ترین عضو آن یعنی str خواهد بود (یعنی 20 بایت). مثال زیر این موضوع را به خوبی نشان می دهد:

امتحان کنید

زمانی که کد بالا توسط کامپایلر C و اجرا شود، نتیجه زیر را تولید خواهد کرد:

دسترسی به اعضای union

به منظور دسترسی به اعضای یک union می توانید از عملگر (.) استفاده کنید. در هنگام تعریف یک متغیر از نوع union باید از کلمه کلیدی union استفاده کنید.

به مثال زیر توجه کنید:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

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

مثال زیر تغییر یافته مثال بالا است:

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

 

باکس دانلود
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است