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

Anonim

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

ما هو الهيكل؟

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

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

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

ستروك إمبلويي {

سترينغ نيم؛

سن السلسلة؛

سلسلة الهاتف؛

راتب سلسلة؛

} emp1، emp2؛

هنا، 'الموظف' هو اسم الهيكل ومتغيرين 'emp1' و 'emp2' يتم إنشاؤها من نوع 'موظف'. يجب أن تتبع الأقواس الختامية بفاصلة منقوطة (؛).

أعضاء هيكل يمكن الوصول إليها من قبل نوعين من المشغلين:

  1. عامل
  2. عامل مؤشر الهيكل

ما هو الاتحاد؟

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

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

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

موظف الاتحاد {

اسم شار [32]؛

العمر.

رواتب تعويم؛

وهنا تحدد الكلمة الرئيسية "الاتحاد" الاتحاد الذي يشبه إلى حد بعيد إعلان الهيكل. ويمكن للمتغير إما أن يخزن قيمة سلسلة هي "اسم الموظف"، وقيمة صحيحة هي "عمر الموظف"، أو تعويم يمثل "راتب الموظف".

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

1. الكلمة الرئيسية

يتم استخدام الكلمة الرئيسية 'ستروكت' لتحديد بنية بينما يتم استخدام الكلمة الرئيسية 'ونيون' لتعريف النقابة.

2. تخصيص الذاكرة

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

3. وصول الأعضاء

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

4. الحجم

حجم الهيكل يساوي مجموع حجم جميع الأعضاء أو أكثر، في حين أن حجم الاتحاد يساوي حجم أكبر حجم عضو.

5. التهيئة

في هيكل، يمكن تهيئة العديد من الأعضاء في وقت واحد، بينما في الاتحاد، لا يمكن تهيئة أول عضو إلا بقيمة نوعه.

5. القيمة

يمكن للهيكل أن يخزن قيم مختلفة لجميع الأعضاء وأن التغيير في قيمة عضو واحد لن يكون له أي تأثير على قيم الأعضاء الآخرين. في حين أن الاتحاد يخزن نفس القيمة لجميع أعضائه وتغيير قيمة عضو واحد سيؤثر على قيمة أخرى.

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

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

ملخص

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