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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!