מבנים ב- C.

Structures C



ב- C, מבנה הוא משתנה מוגדר משתמש המשמש לאחסון אוסף של משתנים תחת ישות אחת. הבה נשתמש באנלוגיה פשוטה להסברת יישום ותועלת המבנים ב- C.

נניח שאנו רוצים לאחסן מידע על משתמשים המשתמשים בשירות ספציפי. מידע כזה יכול לכלול את שם המשתמש, הדוא'ל, הכתובת, מצב השירות וכדומה. כדי לאחסן מידע כזה, אנו יכולים ליצור כל מאפיין כמשתנה עצמאי. עם זאת, כשיש לנו עשרה משתמשי פלוס, הקוד יכול לצאת משליטה ולהיות מאוד קשה ומייגע לקריאה.







כדי לפתור זאת, אנו יכולים ליצור מבנה. בתוך המבנה, אנו יכולים לאחסן את כל התכונות המשותפות לכל המשתמשים ולאחר מכן להוסיף משתנים ייחודיים לכל משתמש.



הבה נבחן דוגמאות שונות כדי לראות כיצד ליישם זאת.



כיצד להגדיר מבנה ב- C.

כדי להגדיר מבנה ב- C, אנו משתמשים במילת המפתח struct ואחריה שם המבנה. אחרי השם, יש לנו זוג פלטות מתולתלות בהן אנו מוסיפים את החברים.





שקול את התחביר שלהלן:

מבנהstruct_name
{
/* נתונים */
הקלד member_name;
הקלד member_name2;
הקלד member_name3;

...
סוּגname_nameN;
};

שם המבנה יכול להיות כל דבר שתרצו כל עוד הוא עומד בקונבנציית השמות של שפת התכנות C.



אנו יכולים ליישם מבנה לדוגמה של אנלוגית המשתמש כ:

מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
};

כיצד ליצור משתני מבנה

ישנן שתי דרכים עיקריות ליצירת משתני מבנה. הראשון הוא להכריז עליהם כמשתנים רגילים, והשני הוא להגדיר אותם באמצעות פלטות מתולתלות.

הדוגמה להלן מראה כיצד להכריז על משתני מבנה כמשתנים C סטנדרטיים.

מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
};

intרָאשִׁי(intargc, לְהַשְׁחִיר קבוע *argv[])
{
מבנהמשתמשים משתמש 1,משתמש 2,משתמש 3
לַחֲזוֹר 0;
}

השיטה הנוספת ליצירת משתני מבנה היא כפי שמוצג להלן:

מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
}משתמש 1,משתמש 2,משתמש 3;

בדוגמה זו, אנו יוצרים אותם במהלך הצהרת המבנה.

חבר מבנה Init

לא ניתן לאתחל את חברי המבנה במהלך היצירה מכיוון שאין מוקצה זיכרון לסוג.

כדי לאתחל את חברי המבנה, אתה משתמש בסדים המתולתלים כפי שמוצג להלן:

מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
};
intרָאשִׁי(intargc, לְהַשְׁחִיר קבוע *argv[])
{
מבנהמשתמשים משתמש 1= {'שם המשתמש שלי', '[מוגן בדוא'ל]', 35, נָכוֹן}
לַחֲזוֹר 0;
}

חברי מבנה הגישה

כדי לגשת לחברי המבנה, אנו משתמשים באופרטור הנקודות, החל בשם המבנה, נקודה ושם החבר.

מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
};
intרָאשִׁי(intargc, לְהַשְׁחִיר קבוע *argv[])
{
מבנהמשתמשים משתמש 1= {'שם המשתמש שלי', '[מוגן בדוא'ל]', 35, נָכוֹן}
משתמש 1.אימייל = '[מוגן בדוא'ל]'
לַחֲזוֹר 0;
}

בדוגמה זו, אנו ניגשים לחברי user1.

מילת מפתח של Typedef

אנו משתמשים במילת המפתח typedef ליצירת כינוי לסוגי הנתונים, מה שהופך את הקוד לקריא יותר.

לדוגמה:

typedef מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
}u;
intרָאשִׁי(intargc, לְהַשְׁחִיר קבוע *argv[])
{
אתה משתמש 1= {'שם המשתמש שלי', '[מוגן בדוא'ל]', 35, נָכוֹן}
משתמש 1.רשום = שֶׁקֶר
לַחֲזוֹר 0;
}

בדוגמה למעלה, יצרנו כינוי u למבנה המשתמשים. לכן, איננו צריכים להתקשר למשתמשי struct בכל פעם. אנו יכולים להשתמש בך כפי שהוגדר לעיל.

מצביעי מבנה

תוכל גם לקבל מצביע למבנה. פעולה זו מאפשרת לך לגשת לחברים באמצעות אופרטור ->.

לדוגמה:

typedef מבנהמשתמשים
{
לְהַשְׁחִירשם משתמש[עשרים];
לְהַשְׁחִיראימייל[225];
לְהַשְׁחִירכתובת[חמישים];
intגיל;
בול רשום;
}u;
intרָאשִׁי(intargc, לְהַשְׁחִיר קבוע *argv[])
{
אתה משתמש 1= {'שם משתמש', '[מוגן בדוא'ל]', 35, נָכוֹן}

// מצביע למבנה אחר
u*user_ptr= &משתמש 1
user_ptr->שם משתמש= 'שם משתמש'
לַחֲזוֹר 0;
}

סיכום

מדריך זה עוסק ביסודות העבודה עם מבנים בשפת התכנות C.

תודה שקראת!