לדלג לתוכן

3.6 סטראקטים תרגול

תרגול – Struct ו־Union

בתרגיל זה נתרגל כיצד לבנות מבנים (struct), לגשת אליהם, לשלב אותם זה בזה, ולזהות את ההבדל בינם לבין union.


סעיף 1 – יצירת struct פשוט

  1. הגדר מבנה Student שמכיל:

    • מחרוזת name (מצביע ל־char)

    • מספר שלם age

    • ממוצע ציונים avg מסוג float

  2. בתוכנית הראשית:

    • צור משתנה מסוג Student

    • אתחל את הערכים של השדות

    • הדפס את כל השדות עם printf


סעיף 2 – העתקת struct

  1. העתק את משתנה ה־Student למשתנה אחר (s2 = s1)

  2. הדפס את כל השדות של המשתנה החדש

  3. שנה את הגיל של s1, וודא שהגיל של s2 לא משתנה (כלומר העתקה אמיתית)


סעיף 3 – struct בתוך struct

  1. הגדר מבנה Date עם שדות: day, month, year

  2. שנה את Student כך שיכיל גם שדה birth_date מסוג Date

  3. בתוכנית הראשית:

    • אתחל את birth_date של תלמיד

    • הדפס את תאריך הלידה


סעיף 4 – שימוש ב־union

  1. הגדר union בשם Data עם 3 שדות:

    • int i

    • float f

    • char* str

  2. בתוכנית הראשית:

    • אתחל את השדה i והדפס אותו

    • לאחר מכן, אתחל את f והדפס אותו

    • הדפס שוב את i – הסבר מה קרה


סעיף 5 – sizeof ובדיקת גדלים

  1. עבור ה־struct שיצרת בסעיף 1, הדפס את sizeof(Student)

  2. עבור ה־union שיצרת בסעיף 4, הדפס את sizeof(Data)

  3. הסבר בקצרה מדוע התוצאה היא מה שהיא


סעיף בונוס

  1. צור struct שמכיל char ואחריו int

  2. הדפס את sizeof של המבנה

  3. מה אתה חושב שיקרה אם נחליף את הסדר ל־int ואחריו char?