Beispiel
struct person
{
char Vorname[80];
char Nachname[80];
int Geburtstag;
MONAT Geburtsmonat;
int Geburtsjahr;
};
int main()
{
struct person person1;
char Vorname[80] = "Arthur";
person1.Geburtstag = 5;
person1.Geburtsmonat = Februar;
strncpy(person1.Vorname, Vorname, 80);
return 0;
}Wissenswert
Achtung: Pointer-Stern bindet nicht so gut wie der Punkt:
// Eher so:
(*p1).geburtstag = 1991;
// Oder auflösen durch Pfeil:
p1->geburtstag = 1991;Typedef
typedef struct {
char Vorname[80];
int Geburtsjahr;
} person;
int main()
{
person reg;
reg.Geburtsjahr = 2003;
return 0;
}Im Speicher
short s;
int i;Würde ohne optimierungen im Speicher z.B. so ausschauen:
Adr Wert
0 s s i i
4 i i . .
8 . . . .
Um i zu lesen müsste der Prozessor dann 2x auf den Speicher zugreifen: Ein mal für die erste Hälfte in Adresse 0 und für die zweite Hälfte in Adresse 2.
Deshalb erzeugt der Compiler Speicherlücken (Alignments):
Adr Wert
0 s s - -
4 i i i i
8 . . . .
Größe der structs: Abhängig von
- Anzahl der Variablen
- Typen der Variablen
- Alignments