PDA

View Full Version : تفاوت struct با union چیه؟



hilablog
جمعه 11 اسفند 1385, 11:58 صبح
سلام
میخواستم یک سوالم رو یکنفر لطف کنه و جواب بده. میخوام بدونم تفاوت union با struct چیه. لطفا هرکس میدونه حتی الامکان برام بفرسته به ایمیلم. ممنون میشم.
با تشکر.
Hilablog@gmail.com

american_iran2006
جمعه 11 اسفند 1385, 15:58 عصر
تفاوتشو ن تو تعریفشون معلومه

union: ساختاری هست که تمام متغییر های تعریف شده در ان از یک مکان در حافظه استفاده میکنند و هدف از ایجاد انها : مدیریت حافظه میباشد
union ab{
int a;
ch c;
}
تو اینجا فقط 4 بایت حافظه برای هر دو متغییر کنار گذاشته شده :: یعنی زمانی که از char cبخواهید استفاده کنید از یک بیت این حافظه و زمانی که از int a; از کل این حافظه استفاده میشه

یعنی ملاک برای کنار گذاشتن حافظه در union متغییری است که حافظه بیشتری لازم دارد و بقیه متغییر ها از همین حافظه استفاده میکنند

اما در ساختار ها شما هر چنذ تا متغییر استفاده کنید به اندازه همه انها حافظه کنار گذاشته میشه

فرزاد89
شنبه 12 اسفند 1385, 22:03 عصر
شما وقتی نوع داده را union میذاری یعنی از بین داده های تعریف شده فقط مقدار یکی از انها برای شما اهمیت دارد ولی در struct شما از تمامی متغییر ها استفاده کرده و برای همی انها فضا اشغال میکن ودر در union برای تمام متغییر های یک نوع یک بار حافظه در نظر گرفته می شود

توسعه نویس
سه شنبه 11 اردیبهشت 1386, 21:25 عصر
ببینید Union ها برای مقاصد خاصی استفاده میشه. مثلا شما یک ساختار برای ذخیره چندین نوع متفاوت را در یک محدوده حافظه واحد میخواهید. مثلا شما می خواهید داده Char بریزید ولی بعضی مواقع باید این متغییر شما مقدار اینتجر رو بگیره.
union ها را می توان برای مقاصد تبدیل نوعهای غیر مرسوم و سفارشی بکار برد.



union mytype {
short int num;
char ch[2];
};
//------Declare Con
mytype Con;

//------use Con
Con.num = 40;

//------show chars from Con
cout << Con.ch[0] << " " << Con.ch[1];

//------use Con
Con.ch[0] = 'A';
Con.ch[1] = 'B';

//------show chars from Con
cout << '\n';
cout << Con.num;


در مثال بالا می بینید که چطور میشه از union برای تبدیل استفاده کرد. اینکار رو میشه با انواع مختلفی از متغییرها انجام داد. ضمنا طول یک union بر حسب بلندترین متغییر درونش تعیین میشود.

اما قضیه استراکچر ها کاملا متفاوته. هر متغییر تعریفی در اون برا خودشه. یعنی مشترک نیستند. و طول یک stracture بر حسب مجموع تمام متغییرها شه. :لبخند: