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

11 Felder (Arrays)<br />

Um mit grösseren Mengen von Daten effizient zu arbeiten, können Felder (Arrays) e<strong>in</strong>gesetzt werden.<br />

Bei e<strong>in</strong>em Feld wird e<strong>in</strong>e Gruppe von Werten unter e<strong>in</strong>em Namen zusammengefasst, <strong>die</strong> e<strong>in</strong>zelnen<br />

Werte haben ke<strong>in</strong>en eigenen Namen mehr, sondern nur noch e<strong>in</strong>e Nummer (Den Index). Der<br />

Index beg<strong>in</strong>nt bei 0, <strong>und</strong> endet bei Grösse - 1.<br />

11.1 Def<strong>in</strong>ition e<strong>in</strong>es Arrays<br />

Bei der Def<strong>in</strong>ition e<strong>in</strong>es Arrays muss <strong>die</strong> Grösse (Die Anzahl der Elemente) <strong>in</strong> eckigen Klammern<br />

angegeben werden:<br />

<strong>in</strong>t Werte[100]; /* Def<strong>in</strong>iert e<strong>in</strong> Array mit 100 Werten */<br />

Die Grösse e<strong>in</strong>es Arrays muss zur Compile-Zeit bekannt se<strong>in</strong>, <strong>und</strong> muss deshalb e<strong>in</strong> konstanter<br />

Ausdruck se<strong>in</strong>. (Ausnahme: VLAs unter [C99], siehe Kap. 11.5)<br />

11.2 Initialisierung e<strong>in</strong>es Arrays<br />

E<strong>in</strong> Array kann bei der Def<strong>in</strong>ition bereits <strong>in</strong>itialisiert werden, wobei <strong>die</strong> e<strong>in</strong>zelnen Initialisierer konstante<br />

Werte se<strong>in</strong> müssen (Ausnahme [C99], siehe Kap. 11.3):<br />

double Resultate[8] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};<br />

Wenn weniger Werte angegeben werden, als das Array gross ist, werden <strong>die</strong> restlichen Arrayelemente<br />

auf 0 gesetzt. Wenn e<strong>in</strong> Array <strong>in</strong>itialisiert wird, muss se<strong>in</strong>e Grösse nicht angegeben werden.<br />

Ohne Grössenangabe wird <strong>die</strong> Grösse automatisch auf <strong>die</strong> Anzahl der Initialwerte gesetzt:<br />

long <strong>in</strong>t Zustand[] = {1, 1, 1, 1, 1, 1}; /* Array hat <strong>die</strong> Grösse 6 */<br />

11.3 [C99] Nichtkonstante Initialisierer<br />

[C99] <strong>in</strong> C99 dürfen <strong>die</strong> Initialisierer für nicht-globale <strong>und</strong> nicht-statische Arrays auch nichtkonstante<br />

Ausdrücke se<strong>in</strong>:<br />

double x = 0.4, y = 3.14;<br />

double Resultate[8] = {1.0, x, 3.0, y, 5,.0, x*y, 7.0, s<strong>in</strong>(x)};<br />

11.4 Zugriff auf <strong>die</strong> Elemente e<strong>in</strong>er Arrayvariable<br />

Auf <strong>die</strong> e<strong>in</strong>zelnen Werte e<strong>in</strong>es Arrays wird mit den eckigen Klammern (Indexoperator) zugegriffen,<br />

<strong>in</strong> den eckigen Klammern steht dabei <strong>die</strong> Nummer des gewünschten Elementes:<br />

Werte[4] = 17;<br />

Werte[9] = Werte[99] - Werte[0];<br />

Bei e<strong>in</strong>em Array mit der Grosse N läuft der Indexbereich von 0 bis N-1, das erste Element hat den<br />

Index 0, <strong>und</strong> das letzte Element hat den Index N-1.<br />

<strong>in</strong>t arr[10];<br />

0 1 2 3 4 5 6 7 8 9<br />

Achtung, es f<strong>in</strong>det ke<strong>in</strong>e Überprüfung auf Bereichsüberschreitung statt. Wenn man <strong>die</strong> Arraygrenzen<br />

verlässt, wird irgendwo auf den Speicher zugegriffen. Dabei können eigene Variablen oder Daten<br />

unbemerkt verändert werden, oder das Programm stürzt ab oder legt merkwürdiges Verhalten an<br />

den Tag.<br />

Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 44/147

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!