ההבדל בין מבנה לאיחוד ההבדל בין
מבנה ואיחוד הם סוגי נתונים המוגדרים על ידי המשתמש ב C שפה והם מושגית אותו, עם זאת, הם עדיין שונים בכמה דרכים כמו זיכרון הדרך מוקצה לחבריהם. הם מוצהרים באופן דומה, אך הם פועלים אחרת. הם מאפשרים למשתמש לשלב סוגי נתונים שונים תחת שם יחיד. בעת שימוש במיקום זיכרון נפרד עבור כל חבר בעת הכרזה על משתני מבנה, החברים השונים של משתנה האיגוד חולקים את אותו מיקום זיכרון. בואו ללמוד את ההבדל בין המבנה ואיחוד הוא פרט.
-> ->מהו מבנה?
מבנה הוא רק סוג נתונים מוגדר על ידי המשתמש ב- C, המאפשר למשתמש לשלב סוגי נתונים מסוגים שונים לסוג אחד בבלוק זיכרון. מבנה יכול להכיל הן סוגי נתונים פשוטים ומורכבים הקשורים זה לזה, אשר אחרת, לא הגיוני. כל חבר בתוך מבנה מקבל את מיקום הזיכרון שלו, כך שניתן לגשת אליו ולאחזר בכל עת.
- <->מבנה משמש כאשר נתונים רבים צרכים הקבצה כמו ספרייה אשר מאחסן מידע על חברים רבים בספר או פנקס כתובות המאחסן את כל המידע על איש קשר אחד - שם, כתובת, מספר טלפון, וכן הלאה. הכתובת של כל חבר תהיה בסדר עולה וזה אומר את הזיכרון של כל חבר יתחיל על ערכי היסט שונים. לשינוי הערך של חבר אחד לא תהיה השפעה על חברים אחרים.
מילת מפתח 'struct' משמשת להגדרת מבנה של סוגי נתונים שונים תחת שם יחיד. לדוגמה, אם ברצונך ליצור מסד נתונים של עובד, יהיה עליך לאחסן את שם העובד, גיל, טלפון ופרטי שכר תחת ישות אחת. זה נעשה על ידי מילת המפתח 'struct', אשר לאחר מכן אומר מהדר כי המבנה הוכרז.
עובד מבנית {
שם מחרוזת;
גיל מחרוזת;
טלפון מחרוזת;
string string;
} emp1, emp2;
כאן, 'עובד' הוא שם המבנה ושני 'emp1' משתנים 'ו-' emp2 'נוצרים מהסוג' עובד '. סוגריים הסגירה חייב להיות ואחריו נקודה פסיק (;).
חברים במבנה ניתן לגשת לשני סוגים של אופרטורים:
- מפעיל משתמש
- מפעיל מצביע מבנה
מהו האיחוד?
זהו סוג נתונים מיוחד המשמש ב- C המאפשר למשתמש לאחסן סוגי נתונים מסוגים שונים באותו מיקום זיכרון. איחוד הוא די דומה למבנה והוא יכול להיות מוגדר על ידי החלפת מילת המפתח 'struct' עם מילת המפתח 'איחוד'. החברים מכסים את הזיכרון של האחד באיגוד, והוא גדול דיו כדי שיתאים לכל חבריו.
כאשר משתנה קשור לאיגוד, המהדר מקצה את הזיכרון על ידי התייחסות לגודל הזיכרון הגדול ביותר, כך שגודל האיגוד שווה לגודלו של חבר הנתונים הגדול ביותר.איגוד יכול להיות מוגדר עם חברים רבים, אבל רק חבר אחד מכיל את הערך בכל מקרה נתון של זמן.
הכתובת זהה לכל חברי האיגוד, כלומר כל חבר מתחיל באותו ערך היסט. ושינוי הערך של חבר אחד ישפיע על ערכים של חברים אחרים. ניתן להשתמש באיגוד כאשר ברצונך לאחסן משהו שהוא אחד מסוגי נתונים שונים.
עובד האיחוד {
שם char [32];
גיל int;
שכר צף;
};
כאן מילת המפתח 'איחוד' מגדירה את האיחוד הדומה למדי להצהרת המבנה. המשתנה יכול לאחסן ערך מחרוזת שהוא 'שם העובד', ערך שלם שהוא 'גיל העובד' או צף המייצג את 'משכורתו של העובד'.
ההבדל בין מבנה לאיחוד
1. מילת מפתח
מילת המפתח 'struct' משמשת להגדרת מבנה ואילו מילת מפתח 'איחוד' משמשת להגדרת איחוד.
2. הקצאת זיכרון
שטח זיכרון נפרד מוקצה לחברים בתוך מבנה ולחברים יש כתובות שונות שאינן משתפות זיכרון. איגוד, לעומת זאת, חולק את אותו מקום זיכרון לכל חבריו כך המיקום זיכרון משותף מוקצה.
3. חבר גישה
איגוד מאחסן ערך אחד בכל פעם עבור כל חבריו עושה נגישות רק חבר אחד בכל פעם. בעוד ערכים מרובים ניתן לאחסן במבנה כך כל חבר ערך ניתן לגשת לאחזר בכל עת.
4. גודל
גודלו של מבנה שווה לסכום גודל כל החברים או יותר, בעוד שגודל האיגוד שווה לגודלו של חבר הגודל הגדול ביותר.
5. האתחול
במבנה, ניתן לאתחל מספר חברים בו זמנית, ואילו באיגוד, רק את החבר הראשון ניתן לאתחל עם הערך מסוגו.
5. ערך
מבנה יכול לאחסן ערכים שונים של כל החברים ושינוי בערכו של חבר אחד לא ישפיע על הערכים של חברים אחרים. בעוד האיגוד מאחסן ערך זהה עבור כל חבריו ושינוי הערך של חבר אחד ישפיע על הערך של אחרים.
מבנה לעומת איחוד
מבנה | איחוד |
מילת מפתח משמשת להגדרת מבנה. | מילת מפתח של האיחוד משמשת להגדרת איחוד. |
חברים אינם חולקים זיכרון במבנה. | חברים חולקים את מקום הזיכרון באיגוד. |
כל חבר יכול להיות מאוחזר בכל עת במבנה. | רק חבר אחד יכול לגשת בכל פעם באיגוד. |
כמה חברים במבנה יכולים להיות מאותחל בבת אחת. | רק את החבר הראשון ניתן לאתחל. |
גודל המבנה שווה לסכום הגודל של כל חבר. | גודל האיגוד שווה לגודלו של החבר הגדול ביותר. |
ערך שינוי של חבר אחד לא ישפיע על הערך של ערך אחר. | שינוי הערך של חבר אחד ישפיע על ערכי חברים אחרים. |
חנויות ערכים שונים עבור כל החברים. | חנויות ערך זהה עבור כל החברים. |
סיכום
- הן המבנה והן האיגוד הם סוגי נתונים המוגדרים על ידי המשתמש ב- C, שהם פונקציונליים ומושגיים, אך הם שונים למדי בכמה דרכים.
- שניהם מכילים משתנים מסוגי נתונים שונים, אך הם משתמשים באותו תחביר להכרזה על משתנים וגישה לחברים. בעוד שמבנה מוגדר על ידי מילת המפתח 'struct', איחוד מוגדר על ידי מילת המפתח 'איחוד'.
- כל חבר מקבל מיקום זיכרון נפרד במבנה, ואילו באיחוד, שטח הזיכרון הכולל שווה לחבר הגדול ביותר. כל החברים חולקים את אותו שטח זיכרון באיגוד.
- כל חבר בכל רצף ניתן לגשת למבנה, ואילו באיחוד, רק משתנה זה ניתן לגשת לערכו המאוחסן לאחרונה.