یونیون های سی

یونیون ها در برنامه نویسی C

اساطیر زبان

در این آموزش با یونیون ها (unions) در برنامه نویسی C آشنا خواهید شد و شیوه ایجاد یونیون ها، دسترسی به اعضای آنها و تفاوت بین یونیون ها و ساختارها را یاد خواهید گرفت.

یونیون نوع تعریف شده توسط کاربر است که شبیه ساختارها در زبان C است اما یک تفاوت کلیدی دارند. ساختارها فضای کافی از حافظه را برای ذخیره همه اعضای خود اختصاص می دهد اما یونیون ها فقط به اندازه بزرگترین عضو فضا تخصیص می دهند.

 


برنامه نویسی شبکه معماری کامپیوتر هوش مصنوعی و تجاری

توی این پک فوق العاده، صفرتاصد مبانی برنامه نویسی رو جوری یاد میگیری که تو هیچ کلاس آموزشی یا پک دیگه ای نه دیدی نه شنیدی! بدون هیچ کلاسی، با صفرتاصد مبانی برنامه نویسی اپلیکیشن بزن، پروژه محور یاد بگیر و حسابی پول در بیار! 


 

تعریف یونیون

برای تعریف یونیون ها از کلمه کلیدی union استفاده می شود. مثال،

union car

{

char name[50];

int price;

};

در این کد union car یک نوع مشتق شده است.

نکته: در یونیون ها می توانید چند عضو ایجاد کنید اما در یک زمان مشخص تنها یک عضو می تواند مقدار (درست) داشته باشد.

تعریف متغیرهای union

یونیون یک نوع تعریف شده توسط کاربر است که در هنگام تعریف حافظه ای اختصاص داده نمی شود. برای تخصیص حافظه برای نوع یونیون و کار با آن باید متغیرهایی از نوع یونیون ایجاد کنید.

در کد زیر نحوه تعریف متغیرهای یونیون آورده شده است.

union car

{

char name[50];

int price;

};

int main()

{

union car car1, car2, *car3;

return 0;

}

یک روش دیگر برای تعریف متغیرهای یونیون،

union car

{

char name[50];

int price;

} car1, car2, *car3;

در هر دو مورد، متغیرهای car1، car2 و اشاره گر یونیون car3 از نوع union car ساخته شده اند.

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

از عملگر . (نقطه) برای دسترسی به اعضای یونیون استفاده می شود. برای دسترسی متغیرهای اشاره گر از عملگر < استفاده میشود.

در مثال بالا،

  • برای دسترسی به price برای متغیرcar1 از car1.price استفاده شده است.
  • برای دسترسی به price با car3 از (car3).price* یا car3->price استفاده می شود.

تفاوت بین یونیون ها (union) و ساختارها (structure)

برای نشان دادن تفاوت بین یونیون ها و ساختارها یک مثال می زنیم:

#include <stdio.h>

union unionJob

{

// union تعریف

char name[32];

float salary;

int workerNo;

} uJob;

struct structJob

{

char name[32];

float salary;

int workerNo;

} sJob;

int main()

{

printf(“size of union = %d bytes”, sizeof(uJob));

printf(“\nsize of structure = %d bytes”, sizeof(sJob));

return 0;

}

خروجی

size of union = 32

size of structure = 40

چرا اندازه متغیرهای یونیون و ساختار متفاوت است؟

در اینجا، اندازه متغیر sJob بابر با ۴۰ بایت است، چون:

  • اندازه name[32]  برابر با ۳۲ بایت،
  • اندازه salary برابر با ۴ بایت،
  • و اندازه workerNo برابر با ۴ بایت است.

اندازه uJob برابر با ۳۲ بایت است، زیرا اندازه متغیر union همیشه به اندازه بزرگترین عنصر آن خواهد بود. در مثال بالا، اندازه بزرگترین عنصر (name[32])، ۳۲ بایت است.

در یونیون همه اعضا حافظه مشابهی دارند، در واقع از یک بلوک حافظه استفاده می کنند.

مثال: دسترسی به اعضای Union

#include <stdio.h>

union Job {

float salary;

int workerNo;

} j;

int main() {

j.salary = 12.3;

// را نگه دارد ۱۲٫۳ نمی تواند مقدار j.salary ، j.workerNo با مقداردهی

j.workerNo = 100;

printf(“Salary = %.1f\n”, j.salary);

printf(“Number of workers = %d”, j.workerNo);

return 0;

}

خروجی

Salary = 0.0

Number of workers = 100

زمانی که j.workerNo مقداردهی می شود، مقدار j.salary نیز تغییر می کند و در همزمان دو عضو نمی توانند مقدار داشته باشند. به دلیل اینکه هر دو متغیر union از یک بلوک مشترک در حافظه استفاده می کنند.

تفاوت پک های حرفه ای ما با آموزشهای رایگان: بطور خلاصه از زمین تا آسمان! 1-پکها، جدیدترین نسخه نرم افزارها را آموزش می دهند با قابلیت های بسیار بیشتر. 2-پکها توسط متخصص آن نرم افزار، به صورت کاملا پروژه محور و با حل چالش هایی که در مسیر کار عملی و حرفه ای با آن روبرو می شوید تهیه شده اند و بعد از استفاده، کاملا برای بازار کار آماده اید! 3- متد این پکها کاملا کار شده و تا ماهها، در ذهن تان ماندگارند و یادگیری بسیار سریعتر و کاملتری خواهید داشت. آموزشهای رایگان فقط دستورات نرم افزارها را (آنهم ناقص) بیان می کنند و تازه برای ورود به بازار باید ماهها تجربه عملی هم کسب کنید !!

turned_in,

چرب زبان

با این اپلیکیشن ساده، هر زبانی رو فقط با 5 دقیقه در روز، توی 80 روز مثل بلبل حرف بزن! بهترین متد روز، تقویت حافظه، آموزش تصویری. یادگیری زبان کلید یادگیری هر مهارتی در قرن 21 !


حتما بخوانید!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست