الفرق بين الهيكل والاتحاد في ج

ما هو الهيكل؟

البنية هي نوع بيانات محدد من قبل المستخدم في لغة البرمجة C والذي يجمع عناصر البيانات المرتبطة منطقيا من أنواع بيانات مختلفة معًا.

يتم تخزين كافة عناصر البنية في مواقع ذاكرة متجاورة. يمكن لمتغير نوع البنية تخزين أكثر من عنصر بيانات من أنواع بيانات مختلفة تحت اسم واحد.

ما هو الاتحاد

Union هو نوع بيانات محدد من قبل المستخدم، تمامًا مثل البنية. يجمع Union بين كائنات من أنواع وأحجام مختلفة معًا. يخصص متغير الاتحاد مساحة الذاكرة المساوية للمساحة لاحتواء أكبر متغير للاتحاد. يسمح لأنواع مختلفة من الكائنات بمشاركة نفس الموقع.

بناء جملة الإعلان عن الهيكل

struct [name of the structure]
   {
       type member1;
       type member2;
       type member3;
   };

يتم الإعلان عن البنية باستخدام الكلمة الأساسية "struct" واسم البنية. رقم 1، رقم 2، رقم 3 هم أعضاء فرديون في الهيكل. يتم إنهاء جزء الجسم بفاصلة منقوطة (؛).

مثال على الهيكل في برمجة C

#include <stdio.h>
struct student {
    char name[60];
    int roll_no;
    float marks;
} sdt;
int main() {
    printf("Enter the following information:\n");
    printf("Enter student name: ");
    fgets(sdt.name, sizeof(sdt.name), stdin);
    printf("Enter student roll number: ");
    scanf("%d", & sdt. roll_no);
    printf("Enter students marks: ");
    scanf("%f", & sdt.marks);
    printf("The information you have entered is: \n");
    printf("Student name: ");
    printf("%s", sdt.name);
    printf("Student roll number: %d\n", sdt. roll_no);
    printf("Student marks: %.1f\n", sdt.marks);
    return 0;
}

في البرنامج أعلاه، يتم إنشاء هيكل يسمى الطالب. تحتوي هذه البنية على ثلاثة أعضاء بيانات: 1) الاسم (سلسلة)، 2) roll_no (عدد صحيح)، و3) علامات (عائمة).

بعد ذلك، يتم إنشاء متغير البنية sdt لتخزين معلومات الطالب وعرضها على شاشة الكمبيوتر.

الإخراج:

أدخل المعلومات التالية:

أدخل اسم الطالب: جيمس

أدخل رقم الطالب: 21

أدخل علامات الطالب: 67

المعلومات التي أدخلتها هي:

اسم الطالب : جون

رقم الطالب : 21

علامات الطالب: 67.0

بناء جملة إعلان الاتحاد

union [name of union]
    {
       type member1;
       type member2;
       type member3;
    };

يتم الإعلان عن الاتحاد باستخدام الكلمة الأساسية "اتحاد" واسم الاتحاد. رقم 1، رقم 2، رقم 3 هم أعضاء فرديون في النقابة. يتم إنهاء جزء الجسم بفاصلة منقوطة (؛).

مثال على الاتحاد في البرمجة C

#include <stdio.h>

union item
{
    int x;
    float y;
    char ch;
};

int main( )
{
    union item it;
    it.x = 12;
    it.y = 20.2;
    it.ch = 'a';
    
    printf("%d\n", it.x);
    printf("%f\n", it.y);
    printf("%c\n", it.ch);
    
    return 0;
}

الإخراج:

1101109601

20.199892

a

في البرنامج أعلاه، يمكنك أن ترى أن قيم x و y أصبحت تالفة. فقط المتغير ch يطبع النتيجة المتوقعة. وذلك لأنه، في الاتحاد، يتم مشاركة موقع الذاكرة بين جميع أنواع بيانات الأعضاء.

ولذلك، فإن عضو البيانات الوحيد الذي تم تخزين قيمته حاليًا، سيشغل مساحة من الذاكرة. تم تخزين قيمة المتغير ch أخيرًا، وبالتالي فإن قيمة باقي المتغير المتغيرات ضائع.

الهيكل مقابل. اتحاد

الهيكل مقابل. اتحاد
الهيكل مقابل. اتحاد

هنا هو الفرق المهم بين الهيكل والاتحاد:

الهيكلية الاتحاد
يمكنك استخدام الكلمة الأساسية للبنية لتحديد البنية. يمكنك استخدام الكلمة الأساسية union لتعريف الاتحاد.
يتم تعيين موقع ذاكرة فريد لكل عضو داخل الهيكل. في الاتحاد، تتم مشاركة موقع الذاكرة من قبل جميع أعضاء البيانات.
لن يؤثر تغيير قيمة أحد أعضاء البيانات على أعضاء البيانات الآخرين في البنية. سيؤدي تغيير قيمة أحد أعضاء البيانات إلى تغيير قيمة أعضاء البيانات الآخرين في الاتحاد.
أنها تمكنك من تهيئة عدة أعضاء في وقت واحد. أنها تمكنك من تهيئة العضو الأول فقط في الاتحاد.
الحجم الإجمالي للبنية هو مجموع حجم كل عضو في البيانات. الحجم الإجمالي للاتحاد هو حجم أكبر عضو في البيانات.
يتم استخدامه بشكل أساسي لتخزين أنواع البيانات المختلفة. يتم استخدامه بشكل أساسي لتخزين أحد أنواع البيانات العديدة المتوفرة.
إنها تشغل مساحة لكل عضو مكتوب بالمعلمات الداخلية. إنه يشغل مساحة للعضو ذي الحجم الأكبر المكتوب في المعلمات الداخلية.
يمكنك استرداد أي عضو في وقت واحد. يمكنك الوصول إلى عضو واحد في كل مرة في الاتحاد.
وهو يدعم مجموعة مرنة. لا يدعم مجموعة مرنة.

مزايا الهيكل

فيما يلي إيجابيات/فوائد استخدام البنية:

  • تجمع الهياكل أكثر من جزء واحد من البيانات حول نفس الموضوع معًا في نفس المكان.
  • يكون ذلك مفيدًا عندما تريد جمع بيانات أنواع ومعلمات مماثلة مثل الاسم الأول واسم العائلة وما إلى ذلك.
  • من السهل جدًا الحفاظ عليه حيث يمكننا تمثيل السجل بأكمله باستخدام اسم واحد.
  • من الناحية الهيكلية، يمكننا تمرير مجموعة كاملة من السجلات إلى أي وظيفة باستخدام معلمة واحدة.
  • يمكنك استخدام مجموعة من الهياكل لتخزين المزيد من السجلات بأنواع مماثلة.

مزايا الاتحاد

فيما يلي إيجابيات/فوائد استخدام Union:

  • أنها تشغل ذاكرة أقل مقارنة بالهيكل.
  • عند استخدام union، يمكن الوصول مباشرة إلى المتغير الأخير فقط.
  • يتم استخدام Union عندما يتعين عليك استخدام نفس موقع الذاكرة لاثنين أو أكثر من أعضاء البيانات.
  • أنها تمكنك من الاحتفاظ ببيانات عضو بيانات واحد فقط.
  • المساحة المخصصة لها تساوي الحد الأقصى لحجم عضو البيانات.

عيوب الهيكل

فيما يلي سلبيات/عيوب استخدام البنية:

  • إذا تجاوزت تعقيدات مشروع تكنولوجيا المعلومات الحد الأقصى، يصبح من الصعب إدارته.
  • يستلزم تغيير بنية بيانات واحدة في الكود تغييرات في العديد من المواضع الأخرى. ولذلك، تصبح هذه التغييرات صعبة التنفيذ. track.
  • البنية أبطأ لأنها تتطلب مساحة تخزين لجميع البيانات.
  • يمكنك استرداد أي عضو في وقت واحد في البنية بينما يمكنك الوصول إلى عضو واحد في كل مرة في الاتحاد.
  • يشغل الهيكل مساحة لكل عضو مكتوب بالمعلمات الداخلية بينما يشغل الاتحاد مساحة للعضو ذي الحجم الأكبر المكتوب بالمعلمات الداخلية.
  • الهيكل يدعم مجموعة مرنة. الاتحاد لا يدعم مجموعة مرنة.

عيوب الاتحاد

فيما يلي سلبيات/عيوب استخدام الاتحاد:

  • يمكنك استخدام عضو واحد فقط في الاتحاد في كل مرة.
  • لا يمكن تهيئة كافة المتغيرات الموحدة أو استخدامها بقيم مختلفة في المرة الواحدة.
  • يخصص الاتحاد مساحة تخزين مشتركة واحدة لجميع أعضائه.

الاختلافات الرئيسية:

  • يتم تعيين موقع ذاكرة فريد لكل عضو داخل البنية بينما تتم مشاركة موقع الذاكرة في الاتحاد بواسطة جميع أعضاء البيانات.
  • لن يؤثر تغيير قيمة عضو بيانات واحد على أعضاء البيانات الآخرين في البنية بينما سيؤدي تغيير قيمة عضو بيانات واحد إلى تغيير قيمة أعضاء البيانات الآخرين في الاتحاد.
  • يستخدم الهيكل بشكل أساسي لتخزين أنواع البيانات المختلفة بينما يستخدم الاتحاد بشكل أساسي لتخزين أحد أنواع البيانات العديدة.
  • من الناحية الهيكلية، يمكنك استرداد أي عضو في وقت واحد، ومن ناحية أخرى في الاتحاد، يمكنك الوصول إلى عضو واحد في كل مرة.
  • يدعم الهيكل المصفوفة المرنة بينما لا يدعم الاتحاد المصفوفة المرنة.

تحقق أيضًا من برنامج C التعليمي للمبتدئين: - اضغط هنا

تلخيص هذه التدوينة بـ: