יצירת משתני struct
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 40 מתוך 63.
לאחר שהצהרת על טיפוס struct, אפשר להשתמש בו כדי ליצור משתנים ממשיים שמכילים נתונים. יצירת משתנה מסוג struct פועלת בדיוק כמו הצהרה על כל משתנה אחר ב-C — מציינים את טיפוס הנתונים ואחריו את שם המשתנה.
התחביר ליצירת משתנה מסוג struct הוא:
struct StructureName variableName;לדוגמה, באמצעות המבנה Point מהשיעור הקודם:
struct Point p1;
struct Point p2;פעולה זו יוצרת שני משתנים, p1 ו־p2, שניהם מסוג struct Point. לכל משתנה יש עותק נפרד משלו של האיברים x ו־y שהוגדרו במבנה.
אפשר ליצור משתני struct רבים ככל שתצטרכו, בדיוק כפי שהייתם עושים עם טיפוסים מובנים כמו int או float. כל משתנה struct הוא עצמאי ויכול להכיל ערכים שונים באיברים שלו. לאחר יצירתם, המשתנים האלה מוכנים לאחסן נתוני קואורדינטות בצורה מסודרת.
אתגר
קלצרו תוכנית C שמדגימה יצירה של כמה משתני struct מסוגים שונים. התוכנית שלכם צריכה:
- להגדיר
structבשםRectangleעם החברים הבאים:- מספר שלם
width - מספר שלם
height
- מספר שלם
- להגדיר
structבשםStudentעם החברים הבאים:- מספר שלם
id - מערך תווים
nameבגודל 30 - מספר ממשי מסוג float
gpa
- מספר שלם
- בפונקציה
main, ליצור את משתני struct הבאים:- שני משתני
Rectangleבשםrect1ו-rect2 - שלושה משתני
Studentבשםstudent1,student2ו-student3
- שני משתני
- להדפיס הודעות אישור עבור כל משתנה שנוצר, בדיוק בפורמט הזה:
Rectangle variable rect1 createdRectangle variable rect2 createdStudent variable student1 createdStudent variable student2 createdStudent variable student3 created
- להדפיס את המספר הכולל של משתני struct שנוצרו בפורמט:
Total struct variables created: 5 - להדפיס את השימוש בזיכרון עבור כל סוג בפורמט:
Memory per Rectangle: [size] bytesMemory per Student: [size] bytes
האתגר הזה בוחן את היכולת שלכם להגדיר כמה סוגי struct וליצור כמה משתנים מכל סוג. כל משתנה struct הוא עצמאי ויש לו שטח זיכרון משלו, וכך מודגם כיצד ניתן להשתמש ב-struct כדי לארגן סוגי נתונים שונים בתוכניות שלכם.
נסו בעצמכם
#include <stdio.h>
int main() {
// TODO: הגדירו כאן את ה-struct בשם Rectangle
// TODO: הגדירו כאן את ה-struct בשם Student
// TODO: צרו כאן את משתני ה-struct
// TODO: הדפיסו הודעות אישור עבור כל משתנה שנוצר
// TODO: הדפיסו את המספר הכולל של משתני ה-struct שנוצרו
// TODO: הדפיסו את השימוש בזיכרון עבור כל סוג struct באמצעות sizeof()
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1יסודות המצביעים
מהו מצביע?הכרזה על מצביעיםאופרטור לקיחת הכתובת (&)אופרטור ביטול ההפניה (*)מצביעי NULLסיכום: יסודות המצביעים7מבנים (structs)
מהו struct?הכרזה על structיצירת משתני structגישה לאיברי structאתחול structסיכום: struct לנתוני תלמיד2מצביעים ומערכים
שמות מערכים כמצביעיםאיברי מערך ומצביעיםאריתמטיקה של מצביעיםהשוואת מצביעיםסיכום: מעבר על מערך באמצעות מצביעים5מצביעים ופונקציות
העברה לפי ערךהעברת מצביעים לפונקציותשינוי משתנים באמצעות מצביעיםדוגמה קלאסית: החלפההעברת מערכים לפונקציותחזרה: ארגומנטים של מצביעי פונקציה3מערכי תווים ומחרוזות
מחרוזות כמערכי charתו הסיום nullקלט מחרוזת באמצעות scanfשימוש ב־strlen()שימוש ב־strcpy()שימוש ב־strcat()שימוש ב־strcmp()סיכום: פונקציות מחרוזת בסיסיותתרגלו בעצמכם: קומפיילר C אונליין