الفرق الرئيسي - الهيكل مقابل الاتحاد في C
المصفوفة عبارة عن بيانات منظمة مدعومة بلغة C. يمكن استخدام المصفوفة لتخزين عناصر البيانات من نفس النوع. إذا كان هناك بيان كعلامات int [10] ؛ ثم العلامات هي مصفوفة يمكنها تخزين عشر علامات وكلها أعداد صحيحة. في بعض الأحيان يكون مطلوبًا تخزين عناصر البيانات من أنواع مختلفة في نفس موقع الذاكرة. على سبيل المثال ، يمكن أن يكون للموظف معرّف الموظف واسمه وقسمه وعمره وما إلى ذلك ، فهي من أنواع بيانات مختلفة. لذلك ، من الضروري أن يكون لديك طريقة لتخزين عناصر البيانات المختلفة كوحدة واحدة. تُستخدم الهياكل والوحدات في C لتخزين عناصر البيانات من أنواع مختلفة في نفس موقع الذاكرة.الهيكل والاتحاد متشابهان لكنهما يفرقان بشكل أساسي بسبب تخصيص الذاكرة. الذاكرة المطلوبة لتخزين متغير الهيكل هي مجموع حجم الذاكرة لجميع الأعضاء. الذاكرة المطلوبة لتخزين متغير الاتحاد هي الذاكرة المطلوبة لأكبر عنصر في الاتحاد. هذا هو الاختلاف الرئيسي بين البنية والاتحاد في C. تناقش هذه المقالة الفرق بين الهيكل والاتحاد في C.
ما هي البنية في C؟
الهيكل هو نوع بيانات محدد من قبل المستخدم في C. يساعد على دمج عناصر البيانات من أنواع مختلفة. يمكن أن يمثل الهيكل السجلات. يمكن للطالب أن يكون له معرف_طالب ، اسم_طالب إلخ. بدلاً من تخزين كل متغير على حدة ، يمكن دمج كل عناصر البيانات المختلفة هذه في وحدة واحدة باستخدام هيكل. يتم تعريفه باستخدام الكلمة الرئيسية "هيكل". في الهيكل ، يمكن الوصول إلى جميع أعضائه في أي وقت ، ويؤدي ما يلي إلى إنشاء نوع بيانات مشتق هيكل الطالب.
منظم طالب {
intstudent_id ؛
char student_name [20] ؛
} ؛
بالنسبة للهيكل أعلاه ، يمكن التصريح عن المتغيرات على النحو التالي.
تنظيم طالب 1 ، طالب 2 ، طالب 3 ؛
هناك طريقتان للوصول إلى أعضاء الهيكل. وذلك باستخدام عامل تشغيل العضو (.) وعامل مؤشر الهيكل (->). يمكن الوصول إلى الأعضاء باستخدام اسم الهيكل المتغير. اسم عضو. إذا أراد المبرمج الوصول إلى اسم الطالب 2 ، فيمكنه كتابة العبارة كـ printf (student2.student_namename) ؛
قم بإحالة البرنامج أدناه بهيكل.
الشكل 01: برنامج C بهياكل
وفقًا للبرنامج أعلاه ، الطالب عبارة عن هيكل.يحتوي على معرف_طالب و اسم_طالب. تم التصريح عن متغيرين من نوع الهيكل في البرنامج الرئيسي. يطلق عليهم اسم student1 و student2. يتم تعيين معرف الطالب 1 بالقيمة 1 باستخدام عامل تشغيل العضو كـ student1.student_id=1. اسم "آن" سلسلة. لذلك ، يتم نسخه إلى عضو student_name باستخدام دالة نسخ السلسلة strcpy. يتم تعيين المعرف والاسم للطالب 2 بطريقة مماثلة. أخيرًا ، تتم طباعة هذه القيم باستخدام عامل عضو.
مقدار الذاكرة المطلوبة لتخزين متغير بنية هو مجموع حجم الذاكرة لجميع الأعضاء. يحتوي Student_id على 4 بايت ويحتوي student_name على 20 بايت (بايت واحد لكل حرف). إجمالي 24 بايت هو مجموع حجم الذاكرة المطلوبة من قبل الهيكل.
ما هو الاتحاد في سي؟
الاتحاد هو نوع بيانات محدد من قبل المستخدم في C. يساعد على تخزين أنواع بيانات مختلفة في نفس موقع الذاكرة. يمكن أن يحتوي الكتاب على خصائص مثل اسم_الكتب والسعر وما إلى ذلك. بدلاً من إنشاء متغيرات لكل منها ، يمكن استخدام اتحاد لضغط جميع أنواع البيانات المختلفة في وحدة واحدة باستخدام اتحاد.يتم تعريفه باستخدام الكلمة الرئيسية "union" ، ويؤدي ما يلي إلى إنشاء دفتر بيانات موحد مشتق.
unionBook {
char name [20] ؛
سعر مزدوج ؛
} ؛
بالنسبة للاتحاد أعلاه ، يمكن الإعلان عن المتغيرات على النحو التالي.
Union Book book1، book2؛
هناك طريقتان للوصول إلى أعضاء النقابة. وذلك باستخدام عامل تشغيل العضو (.) وعامل مؤشر الهيكل (->). يمكن الوصول إلى الأعضاء باستخدام union_variable_name. اسم عضو. إذا أراد المبرمج الوصول إلى اسم book1 ، فيمكنه كتابة العبارة كـ printf (book1.name) ؛
قم بإحالة البرنامج أدناه مع نقابة
الشكل 02: برنامج C باستخدام الاتحاد
الكتاب اتحاد حسب البرنامج أعلاه. الكتاب 1 هو متغير من نوع الاتحاد. يتم تعيين قيم للاسم والسعر. في الاتحاد ، يمكن الوصول إلى واحد فقط من أعضائها في كل مرة وسيكون لدى جميع الأعضاء الآخرين قيم غير صالحة. قيمة المعرف لا تطبع بشكل صحيح لكن قيمة السعر تطبع بشكل صحيح.
الشكل 03: تعديل برنامج C مع الاتحاد
حسب البرنامج أعلاه ، الكتاب هو اتحاد. يُعد كل من book1 و book2 متغيرين من نوع الاتحاد. أولاً ، يتم تعيين قيمة اسم book1 ويتم طباعتها. ثم يتم تعيين قيمة اسم book2 ويتم طباعتها. يطبع جميع الأعضاء بشكل صحيح لأنه يتم استخدام عضو واحد في كل مرة. الذاكرة المطلوبة لتخزين الاتحاد هي الذاكرة المطلوبة لأكبر عنصر في الاتحاد.في البرنامج أعلاه ، متغير الاسم هو 20 بايت. إنه أكبر من السعر. إذن ، تخصيص الذاكرة للاتحاد هو 20 بايت.
ما هي أوجه التشابه بين الهيكل والاتحاد في C؟
- كلا من البنية والاتحاد في C هما نوعان من البيانات المعرفة من قبل المستخدم.
- يمكن استخدام كل من Structure و Union in C لتخزين أنواع بيانات مختلفة في نفس موقع الذاكرة.
ما هو الفرق بين الهيكل والاتحاد في C؟
الهيكل مقابل الاتحاد في C |
|
الهيكل هو نوع بيانات محدد من قبل المستخدم بلغة C يسمح بدمج البيانات من أنواع مختلفة معًا. | Union هو نوع بيانات معرف من قبل المستخدم بلغة C يسمح بدمج البيانات من أنواع مختلفة معًا. |
إمكانية الوصول | |
في الهيكل ، يمكن الوصول إلى جميع أعضائها في أي وقت. | في الاتحاد ، يمكن الوصول إلى واحد فقط من أعضائه في كل مرة وسيحتوي جميع الأعضاء الآخرين على قيم غير صحيحة. |
تخصيص الذاكرة | |
الذاكرة المطلوبة لتخزين متغير الهيكل هي مجموع حجم الذاكرة لجميع الأعضاء. | الذاكرة المطلوبة لتخزين متغير الاتحاد هي الذاكرة المطلوبة لأكبر عنصر في الاتحاد. |
الكلمة الرئيسية | |
الكلمة الأساسية المستخدمة لتعريف الهيكل هي "الهيكل". | الكلمة الأساسية المستخدمة لتعريف الاتحاد هي "الاتحاد". |
ملخص - الهيكل مقابل الاتحاد في C
يتم استخدام مصفوفة لتخزين عناصر البيانات من نفس النوع.في بعض الأحيان يكون من الضروري تخزين عناصر البيانات من أنواع مختلفة في نفس موقع الذاكرة. توفر لغة البرمجة C بنية واتحادًا لإنجاز هذه المهمة. كلاهما من أنواع البيانات المعرفة من قبل المستخدم. الذاكرة المطلوبة لتخزين متغير الهيكل هي مجموع حجم الذاكرة لجميع الأعضاء. الذاكرة المطلوبة لتخزين متغير الاتحاد هي الذاكرة المطلوبة لأكبر عنصر في الاتحاد. هذا هو الفرق بين الهيكل والاتحاد في C.