Ein Array erstellen
In der vorherigen Lektion, über Schleifen, hast du gelernt, Code zu wiederholen. In dieser Lektion lernst du, viele Werte unter einem Namen zu speichern.
Stell dir vor, du willst deine Punkte aus fünf Tests aufbewahren. Mit dem, was du bisher kennst, bräuchtest du fünf Variablen:
int punkte1 = 80;
int punkte2 = 92;
int punkte3 = 75;
int punkte4 = 60;
int punkte5 = 88;Das ist viel Tipparbeit, und für dreißig Tests bräuchtest du dreißig Variablen. Schlimmer noch: Eine Schleife kann sie nicht durchgehen, denn punkte1 und punkte2 sind nur zwei Namen, die nichts miteinander zu tun haben. Dafür gibt es das Array. Ein Array speichert mehrere Werte desselben Typs unter einem Namen:
int punkte[5] = {80, 92, 75, 60, 88};Die Werte in einem Array sind seine Elemente. Dieses Array hat fünf Elemente in einer festen Reihenfolge: 80 ist das erste, 88 das letzte.
Gehen wir die Zeile von links nach rechts durch:
intist der Datentyp der Elemente. Alle Elemente eines Arrays haben denselben Typ, dieses Array enthält also nur ganze Zahlen.punkteist der Name des Arrays. Für ihn gelten dieselben Regeln wie für die Namen von Variablen.[5]in eckigen Klammern ist die Größe des Arrays: die Anzahl seiner Elemente.- In den geschweiften Klammern
{ }stehen die Elemente, getrennt durch Kommas.
Die Größe musst du nicht selbst schreiben. Wenn du die eckigen Klammern leer lässt, zählt der Compiler die Werte in den geschweiften Klammern und macht das Array genau so groß:
int punkte[] = {80, 92, 75, 60, 88};Das ist dasselbe Array mit fünf Elementen. Arrays anderer Typen erstellst du genauso, zum Beispiel die Preise in einem Shop oder die Antworten auf ein Quiz:
double preise[] = {29.90, 149.00, 99.50};
char antworten[] = {'a', 'c', 'b'};Ein Array aus int enthält nur ganze Zahlen. Wenn du die Dezimalzahl 92.5 hineinschreibst, bekommt das Element nur 92. Der Nachkommateil wird abgeschnitten, und keine Fehlermeldung sagt dir etwas davon.
Die Größe eines Arrays ist fest. Sie wird beim Erstellen des Arrays festgelegt und kann sich später nicht ändern: Du kannst zu punkte kein sechstes Element hinzufügen. Auch wenn du die Werte noch nicht kennst, musst du sagen, wie viele Elemente es sein werden. Wenn du weder die Größe noch die Werte schreibst, wie in int punkte[];, lässt sich das Programm nicht kompilieren:
main.c:4:9: error: definition of variable with array type needs an explicit size or an initializerDie Meldung sagt, dass eine Array-Variable eine ausdrückliche Größe oder Startwerte (einen Initialisierer) braucht. Der Compiler muss wissen, wie viel Platz im Speicher des Computers er für das Array reservieren soll.
Um ein Element auszugeben, schreibst du seine Nummer in eckigen Klammern hinter den Namen des Arrays. punkte[0] ist das erste Element von punkte:
int punkte[] = {80, 92, 75, 60, 88};
printf("%d\n", punkte[0]);Das gibt Folgendes aus:
80Warum das erste Element die Nummer 0 hat, erfährst du in der nächsten Übung. Das Programm im Editor gibt die Tore aus dem ersten Spiel auf dieselbe Weise aus.
So schreibst du es:
Anweisungen
- 1
Erstelle unter dem Kommentar ein Array aus ganzen Zahlen mit dem Namen
punkte, der Größe4und den Elementen85,92,78und90, in dieser Reihenfolge. - 2
Gib unter dem Array die erste Punktzahl mit einer Beschriftung aus, so wie das Programm die Tore aus dem ersten Spiel ausgibt. Die Ausgabe soll die Zeile
Erste Punktzahl: 85enthalten.