3.6 סטראקטים תרגול
תרגול – Struct ו־Union¶
בתרגיל זה נתרגל כיצד לבנות מבנים (struct), לגשת אליהם, לשלב אותם זה בזה, ולזהות את ההבדל בינם לבין union.
סעיף 1 – יצירת struct פשוט¶
-
הגדר מבנה
Studentשמכיל:-
מחרוזת
name(מצביע ל־char) -
מספר שלם
age -
ממוצע ציונים
avgמסוגfloat
-
-
בתוכנית הראשית:
-
צור משתנה מסוג
Student -
אתחל את הערכים של השדות
-
הדפס את כל השדות עם
printf
-
סעיף 2 – העתקת struct¶
-
העתק את משתנה ה־
Studentלמשתנה אחר (s2 = s1) -
הדפס את כל השדות של המשתנה החדש
-
שנה את הגיל של
s1, וודא שהגיל שלs2לא משתנה (כלומר העתקה אמיתית)
סעיף 3 – struct בתוך struct¶
-
הגדר מבנה
Dateעם שדות:day,month,year -
שנה את
Studentכך שיכיל גם שדהbirth_dateמסוגDate -
בתוכנית הראשית:
-
אתחל את
birth_dateשל תלמיד -
הדפס את תאריך הלידה
-
סעיף 4 – שימוש ב־union¶
-
הגדר union בשם
Dataעם 3 שדות:-
int i -
float f -
char* str
-
-
בתוכנית הראשית:
-
אתחל את השדה
iוהדפס אותו -
לאחר מכן, אתחל את
fוהדפס אותו -
הדפס שוב את
i– הסבר מה קרה
-
סעיף 5 – sizeof ובדיקת גדלים¶
-
עבור ה־struct שיצרת בסעיף 1, הדפס את
sizeof(Student) -
עבור ה־union שיצרת בסעיף 4, הדפס את
sizeof(Data) -
הסבר בקצרה מדוע התוצאה היא מה שהיא
סעיף בונוס¶
-
צור struct שמכיל
charואחריוint -
הדפס את
sizeofשל המבנה -
מה אתה חושב שיקרה אם נחליף את הסדר ל־
intואחריוchar?