21.11.2013 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!