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