מבוא לתכנות ולמדעי המחשב בשפת 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 ==