تفاوت کلیدی – ساختار در مقابل اتحاد در C
آرایه یک داده است که توسط زبان C پشتیبانی می شود. یک آرایه می تواند برای ذخیره عناصر داده از همان نوع استفاده شود. اگر عبارتی به عنوان علامت های int [10] وجود داشته باشد. سپس علامت ها آرایه ای هستند که می توانند ده علامت را ذخیره کنند و همه آنها اعداد صحیح هستند. گاهی اوقات لازم است عناصر داده از انواع مختلف در یک مکان حافظه ذخیره شوند. به عنوان مثال، یک کارمند می تواند شناسه کارمند، نام، بخش، سن و غیره داشته باشد. آنها از انواع داده های مختلف هستند. بنابراین، وجود روشی برای ذخیره عناصر مختلف داده به صورت یک واحد ضروری است. ساختارها و اتحادیه ها در C برای ذخیره عناصر داده از انواع مختلف در یک مکان حافظه استفاده می شود.یک ساختار و یک اتحادیه مشابه هستند اما عمدتاً به دلیل تخصیص حافظه متمایز می شوند. حافظه مورد نیاز برای ذخیره یک متغیر ساختاری مجموع اندازه حافظه همه اعضا است. حافظه مورد نیاز برای ذخیره یک متغیر اتحادیه، حافظه مورد نیاز برای بزرگترین عنصر در اتحادیه است. این تفاوت اصلی بین ساختار و اتحاد در C است. این مقاله تفاوت بین ساختار و اتحاد در C را مورد بحث قرار می دهد.
ساختار در C چیست؟
ساختاریک نوع داده تعریف شده توسط کاربر در C است. به ترکیب اقلام داده از انواع مختلف کمک می کند. یک ساختار می تواند سوابق را نشان دهد. یک دانش آموز می تواند student_id، student_name و غیره داشته باشد. با استفاده از کلمه کلیدی "struct" تعریف می شود. در یک ساختار، همه اعضای آن در هر زمان قابل دسترسی هستند. موارد زیر یک ساختار نوع داده مشتق شده Student ایجاد می کند.
struct دانشجو {
instudent_id;
کارشناس_نام_دانشجو[20];
};
برای ساختار فوق، متغیرها را می توان به صورت زیر اعلام کرد.
struct Student student1, student2, student3;
دو روش برای دسترسی به اعضای ساختار وجود دارد. یعنی با استفاده از عملگر عضو (.) و عملگر اشاره گر ساختار (->). با استفاده از structure_variable_name می توان به اعضا دسترسی داشت. نام عضو. اگر برنامه نویس بخواهد به نام دانش آموز 2 دسترسی داشته باشد، می تواند عبارت را به صورت printf(student2.student_name); بنویسد.
به برنامه زیر با ساختار مراجعه کنید.
شکل 01: برنامه C با ساختار
طبق برنامه فوق دانشجو یک ساختار است.این شامل student_id و student_name است. دو متغیر از نوع ساختار در برنامه اصلی اعلام شده است. به آنها student1 و student2 می گویند. شناسه student1 با مقدار 1 با استفاده از عملگر عضو به عنوان student1.student_id=1 تخصیص داده می شود. نام "آن" یک رشته است. بنابراین، با استفاده از تابع strcpy به عضو student_name کپی میشود. شناسه و نام به روشی مشابه به student2 اختصاص داده شده است. در نهایت، این مقادیر با استفاده از عملگر عضو چاپ میشوند.
مقدار حافظه مورد نیاز برای ذخیره یک متغیر ساختار، مجموع اندازه حافظه همه اعضا است. student_id شامل 4 بایت و student_name شامل 20 بایت (هر کدام یک بایت برای یک کاراکتر) است. مجموع 24 بایت مجموع اندازه حافظه مورد نیاز ساختار است.
یونیون در C چیست؟
A Union یک نوع داده تعریف شده توسط کاربر در C است. به ذخیره انواع داده های مختلف در یک مکان حافظه کمک می کند. یک کتاب میتواند دارای ویژگیهایی مانند book_name، قیمت و غیره باشد. بهجای ایجاد متغیر برای هر یک از آنها، میتوان از یک اتحادیه برای فشردهسازی انواع دادههای مختلف در یک واحد با استفاده از یک اتحادیه استفاده کرد.با استفاده از کلمه کلیدی "union" تعریف می شود. موارد زیر یک کتاب اتحادیه داده مشتق شده ایجاد می کند.
unionBook{
char name[20];
قیمت دو برابر؛
};
برای اتحادیه فوق، متغیرها را می توان به صورت زیر اعلام کرد.
union Book book1, book2;
دو روش برای دسترسی به اعضای اتحادیه وجود دارد. یعنی با استفاده از عملگر عضو (.) و عملگر اشاره گر ساختار (->). با استفاده از union_variable_name می توان به اعضا دسترسی داشت. نام عضو. اگر برنامه نویس بخواهد به نام book1 دسترسی داشته باشد، می تواند عبارت را به صورت printf(book1.name); بنویسد.
به برنامه زیر با اتحادیه مراجعه کنید.
شکل 02: برنامه C با استفاده از union
طبق برنامه فوق، کتاب یک اتحادیه است. book1 یک متغیر از نوع union است. نام و قیمت مقادیری هستند. در اتحادیه، تنها یکی از اعضای آن در یک زمان قابل دسترسی است و سایر اعضا دارای مقادیر زباله خواهند بود. مقدار id به درستی چاپ نمی شود اما مقدار قیمت به درستی چاپ می شود.
شکل 03: برنامه C تغییر یافته با union
طبق برنامه فوق، بوک یک اتحادیه است. book1 و book2 متغیرهای نوع اتحادیه هستند. ابتدا مقدار book1 به نام اختصاص داده می شود و چاپ می شود. سپس مقدار book2 به نام اختصاص داده می شود و چاپ می شود. همه اعضا به درستی چاپ می کنند زیرا یک عضو در یک زمان استفاده می شود. حافظه مورد نیاز برای ذخیره یک اتحادیه، حافظه مورد نیاز برای بزرگترین عنصر اتحادیه است.در برنامه فوق متغیر نام 20 بایت است. از قیمتش بزرگتره بنابراین، تخصیص حافظه برای اتحادیه 20 بایت است.
شباهتهای بین Structure و Union در C چیست؟
- هر دو Structure و Union در C انواع داده های تعریف شده توسط کاربر هستند.
- هر دو Structure و Union در C می توانند برای ذخیره انواع داده های مختلف در یک مکان حافظه استفاده شوند.
تفاوت بین Structure و Union در C چیست؟
Structure vs Union در C |
|
Structure یک نوع داده تعریف شده توسط کاربر در زبان C است که اجازه می دهد داده های انواع مختلف را با هم ترکیب کنید. | Union یک نوع داده تعریف شده توسط کاربر در زبان C است که امکان ترکیب دادههای انواع مختلف را با هم فراهم میکند. |
دسترسی | |
در یک ساختار، همه اعضای آن در هر زمان قابل دسترسی هستند. | در یک اتحادیه، فقط یکی از اعضای آن در یک زمان قابل دسترسی است و همه اعضای دیگر حاوی مقادیر زباله هستند. |
تخصیص حافظه | |
حافظه مورد نیاز برای ذخیره یک متغیر ساختار مجموع اندازه حافظه همه اعضا است. | حافظه مورد نیاز برای ذخیره یک متغیر اتحادیه، حافظه مورد نیاز برای بزرگترین عنصر در اتحادیه است. |
کلمه کلیدی | |
کلمه کلیدی مورد استفاده برای تعریف ساختار "struct" است. | کلمه کلیدی مورد استفاده برای تعریف اتحادیه "اتحادیه" است. |
خلاصه - ساختار در مقابل اتحاد در C
آرایه ای برای ذخیره عناصر داده از همان نوع استفاده می شود.گاهی اوقات لازم است عناصر داده از انواع مختلف در یک مکان حافظه ذخیره شوند. زبان برنامه نویسی C ساختار و اتحادی را برای انجام این کار فراهم می کند. هر دو نوع داده تعریف شده توسط کاربر هستند. حافظه مورد نیاز برای ذخیره یک متغیر ساختار مجموع اندازه حافظه همه اعضا است. حافظه مورد نیاز برای ذخیره یک متغیر اتحادیه، حافظه مورد نیاز برای بزرگترین عنصر در اتحادیه است. این تفاوت بین ساختار و اتحاد در C است.