PDA

צפייה בגרסה מלאה : מדריך מבני נתונים (Structs) בשפת C



Tamir
06-09-2024, 11:16 PM
מבני נתונים (Structs) בשפת C


מבני נתונים (Structures) בשפת C, או בקיצור `struct`, מאפשרים לאגד מספר משתנים מסוגים שונים תחת שם אחד. מבנה נתונים שימושי מאוד כאשר אנו רוצים לאחסן ולהתמודד עם נתונים מורכבים כמו פרטים על סטודנט, כתובת, או רכב.


הגדרת מבנה נתונים


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



c
#include <stdio.h>


// הגדרת מבנה נתונים של סטודנט
struct Student {
char name[50];
int age;
float grade;
};



מבנה זה מגדיר סטודנט עם שם (מערך תווים בגודל 50), גיל (מספר שלם), וציון (מספר ממשי).


הכרזה על משתנה מסוג מבנה נתונים


לאחר שהגדרנו את המבנה, נוכל להכריז על משתנים מסוג זה ולהשתמש בהם:



c
#include <stdio.h>


struct Student {
char name[50];
int age;
float grade;
};


int main() {
struct Student student1; // הכרזת משתנה מסוג מבנה Student


// אתחול השדות במבנה
strcpy(student1.name, "John Doe");
student1.age = 20;
student1.grade = 85.5;


// הדפסת ערכי השדות
printf("Name: %s\n", student1.name);
printf("Age: %d\n", student1.age);
printf("Grade: %.2f\n", student1.grade);


return 0;
}



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


גישה לשדות בתוך מבנה נעשית באמצעות האופרטור `.` (נקודה). ניתן לקרוא ולשנות את הערכים של השדות באופן הבא:



c
student1.age = 21; // שינוי ערך של השדה 'age'
printf("Updated Age: %d\n", student1.age);



אתחול מבנים בשלב ההכרזה


אפשר גם לאתחל את המבנה בעת ההכרזה על משתנה חדש:



c
struct Student student2 = {"Alice", 22, 90.0};



בקטע קוד זה, אנו מאתחלים את המשתנה `student2` עם ערכי השדות המתאימים.


שימוש במצביעים עם מבנים


ניתן להשתמש במצביעים למבנים כדי לגשת ולשנות את הערכים בצורה יעילה יותר. הגישה לשדות במבנה דרך מצביע נעשית באמצעות האופרטור `->` (חץ):



c
#include <stdio.h>
#include <string.h>


struct Student {
char name[50];
int age;
float grade;
};


int main() {
struct Student student3;
struct Student *ptr;


ptr = &student3; // מצביע למבנה student3


// גישה לשדות דרך מצביע
strcpy(ptr->name, "Bob Smith");
ptr->age = 23;
ptr->grade = 88.0;


printf("Name: %s\n", ptr->name);
printf("Age: %d\n", ptr->age);
printf("Grade: %.2f\n", ptr->grade);


return 0;
}



שימושים נוספים במבנים


- מערכים של מבנים: ניתן להגדיר מערכים של מבנים כדי לאחסן קבוצות של נתונים.

c
struct Student students[3]; // מערך של 3 סטודנטים



- מבנים בתוך מבנים: מבנה יכול לכלול שדה שהוא מבנה אחר.

c
struct Address {
char street[50];
int houseNumber;
};


struct Person {
char name[50];
struct Address address; // שדה שהוא מבנה אחר
};



סיכום


במדריך זה למדנו על מבני נתונים (Structs) בשפת C, כולל הגדרה, הכרזה על משתנים, גישה לשדות, שימוש במצביעים עם מבנים, ואתחול מבנים. מבנים הם כלי חזק לניהול נתונים מורכבים בצורה מאורגנת.


אם יש לכם שאלות נוספות, אתם מוזמנים לשאול! ?