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 ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<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.9 [C99] Zusammengesetzte Literale<br />
In C99 können auch zusammengesetzte Literale (Konstanten) erzeugt werden, dabei wird <strong>in</strong> Klammern<br />
der Typ angegeben (Gleiche Syntax wie beim Cast-Operator), <strong>und</strong> anschliessend folgt <strong>die</strong><br />
entsprechende Initialisiererliste:<br />
Strukturkonstante:<br />
(struct Datum){17, 2, 2003} /* Diese Konstante kann ueberall e<strong>in</strong>gesetzt */<br />
/* werden wo sonst e<strong>in</strong>e Datumstruktur stehen */<br />
/* könnte */<br />
/* Beispiel Zuweisung an Struktur ohne struct Literal (vor C99) */<br />
Klasse[12].Gewicht = 78;<br />
Klasse[12].Geburtsdatum.Tag = 1;<br />
Klasse[12].Geburtsdatum.Monat = 12;<br />
Klasse[12].Geburtsdatum.Jahr = 1999;<br />
Klasse[12].Name[0] = 'U';<br />
Klasse[12].Name[1] = 'R';<br />
Klasse[12].Name[2] = 'S';<br />
Klasse[12].Name[3] = '\0';<br />
/* Beispiel Zuweisung an Struktur mit struct Literal (C99) */<br />
Klasse[12] = (struct Person) {"Urs", 78, {27, 5, 1978}};<br />
/* oder */<br />
Klasse[12] = (struct Person) {"Urs", 78, 27, 5, 1978};<br />
/* oder */<br />
Klasse[12] = (struct Person) {.Name = "Urs",<br />
.Gewicht = 78,<br />
.Geburtsdatum = {27, 5, 1978}};<br />
/* oder */<br />
Klasse[12] = (struct Person) {.Name = "Urs",<br />
.Gewicht = 78,<br />
.Geburtsdatum.Tag = 27,<br />
.Geburtsdatum.Monat = 5,<br />
.Geburtsdatum.Jahr = 1978}};<br />
Die Initialisiererliste folgt dabei den Konventionen der Initialisiererliste gewöhnlicher Strukturen.<br />
Strukturliterale können überall verwendet werden, wo auch e<strong>in</strong>e gewöhnliche Struktur benutzt werden<br />
kann, sie s<strong>in</strong>d eigentlich namenlose Variablen, welche denselben Gültigkeitsbereich wie e<strong>in</strong>e an<br />
<strong>die</strong>ser Stelle def<strong>in</strong>ierte Variable haben.<br />
Strukturliterale können <strong>in</strong>sbesondere an Funktionen übergeben, an Strukturvariablen zugewiesen<br />
<strong>und</strong> ihre Adressen können an Po<strong>in</strong>ter zugewiesen werden.<br />
/* Strukturliteral als Argument fuer e<strong>in</strong>e Funktion */<br />
AddEntry( (struct Person) {"Urs", 78, {27, 5, 1978}});<br />
/* Adresse e<strong>in</strong>es Strukturliterals e<strong>in</strong>em Po<strong>in</strong>ter zuweisen */<br />
struct Person *p;<br />
p = &((struct Person) {"Urs", 78, {27, 5, 1978}});<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 53/147