Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
13 Strukturen<br />
Mit Strukturen können mehrere verschiedene Variablen zu e<strong>in</strong>er E<strong>in</strong>heit zusammengefasst werden.<br />
So können zusammengehörende Variablen auch zusammen behandelt werden. Unterschiedliche<br />
Strukturen gelten jeweils als neuer, eigenständiger Datentyp.<br />
<strong>E<strong>in</strong>e</strong> Strukturdeklaration wird mit dem Schlüsselwort struct e<strong>in</strong>geleitet, gefolgt von e<strong>in</strong>em fakultativen<br />
Strukturnamen <strong>und</strong> e<strong>in</strong>em anschliessenden Block mit e<strong>in</strong>er Liste von Variablendeklarationen.<br />
Der Strukturname kann bei späterer Benutzung anstelle der gesamten Deklaration verwendet<br />
werden.<br />
13.1 Deklarieren e<strong>in</strong>er Struktur.<br />
/* E<strong>in</strong> Datum besteht aus Tag, Monat <strong>und</strong> Jahr */<br />
struct Datum {<br />
char Tag;<br />
<strong>in</strong>t Monat;<br />
<strong>in</strong>t Jahr;<br />
};<br />
Datum<br />
Tag<br />
Monat<br />
Jahr<br />
[C99]<br />
In C99 darf des letzte Element e<strong>in</strong>er Struktur e<strong>in</strong> Array mit e<strong>in</strong>er nicht bekannten Grösse<br />
se<strong>in</strong>. Dies macht aber nur im Zusammenhang mit dynamischer Speicherverwaltung S<strong>in</strong>n,<br />
wenn der Benutzer selbst für <strong>die</strong> Zuordnung von Speicher verantwortlich ist.<br />
struct Telegram { /* Struktur fuer Datenkommunikation */<br />
<strong>in</strong>t Empfaenger;<br />
<strong>in</strong>t Absender;<br />
<strong>in</strong>t Laenge;<br />
<strong>in</strong>t Typ;<br />
<strong>in</strong>t Command;<br />
char Data[]; /* Flexible Datenlaenge */<br />
};<br />
13.2 Def<strong>in</strong>ition e<strong>in</strong>er Strukturvariablen<br />
struct Datum Geburtstag; /* <strong>E<strong>in</strong>e</strong> Datumsvariable def<strong>in</strong>ieren (erzeugen) */<br />
13.3 Initialisierung von Strukturvariablen<br />
struct Datum Geburtstag = {17, 4, 1976};<br />
/*Variable wird def<strong>in</strong>iert <strong>und</strong> Tag auf 17, Monat auf 4 <strong>und</strong> Jahr auf 1976<br />
gesetzt*/<br />
Die Initialisierung e<strong>in</strong>er Struktur erfolgt <strong>in</strong> der selben Reihenfolge wie <strong>die</strong> Auflistung der Felder <strong>in</strong><br />
der Def<strong>in</strong>ition der Struktur. Die Initialwerte müssen <strong>in</strong> geschweiften Klammern aufgelistet werden.<br />
Wenn weniger Werte als Felder <strong>in</strong> der Initialisiererliste stehen, werden <strong>die</strong> restlichen Felder mit 0<br />
gefüllt.<br />
13.4 [C99] Nichtkonstante Initialisierer<br />
[C99]<br />
In C99 dürfen <strong>die</strong> Initialisierer für nicht globale <strong>und</strong> nicht statische Struktur-Variablen<br />
auch nichtkonstante Ausdrücke se<strong>in</strong>:<br />
long did = GetDateInDays(); /* did = DateInDays */<br />
struct Datum Demo = {did%365%31, did%365/31, did/365};<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 50/147