מבוא לתכנות ולמדעי המחשב בשפת C/ניהול זיכרון, מצביעים ומבנים: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
אורי מוסנזון (שיחה | תרומות) |
אורי מוסנזון (שיחה | תרומות) |
||
שורה 227:
</syntaxhighlight>
זאת הדרך המקובלת לפנות לשדה של מבנה מתוך מצביע למבנה.
== מבנים בתוך מבנים ==
השדות של מבנה יכולים להיות בעלי כל טיפוס שהמערכת מכירה, בפרט טיפוס של מבנה שכבר הוגדר קודם. לדוגמה:
<syntaxhighlight>
#include <stdio.h>
#include <stdlib.h>
struct Address {
char *street;
int number;
char *town;
int zipCode;
char *state;
};
void printAddress(struct Address ad) {
printf("%s %d, %s. Zip: %d, %s\n",ad.street,
ad.number,ad.town,ad.zipCode, ad.state);
}
struct Person {
int id;
char *name;
struct Address address;
};
void printPerson(struct Person p) {
printf("%s, id:%d\n",p.name, p.id);
printAddress(p.address);
}
int main() {
struct Address ad;
ad.street = "Hasivim";
ad.number = 8;
ad.town = "Petah Tikva";
ad.zipCode = 3156;
ad.state = "Israel";
struct Person per;
per.name = "Yakir Yakirov";
per.id = 1234567;
per.address = ad;
printPerson(per);
return 0;
}
</syntaxhighlight>
'''פלט:'''
<syntaxhighlight>
Yakir Yakirov, id:1234567
Hasivim 8, Petah Tikva. Zip: 3156, Israel
</syntaxhighlight>
== typedef ==
|