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?