Felder (Arrays)
Stellen Sie sich vor, sie wollen in Ihrem Programm zehn Integer-Variablen einlesen, alle in eigenen Variablen schreiben um hernach mit Ihnen weiterzurechnen und wieder ausgeben.
Sie müssten schreiben:
Int ia1,ia2,ia3,ia4, ..., ia10;
scanf("%i", &ia1); fflush(stdin); scanf("%i", &ia2); … scanf("%i",&ia10); fflush(stdin);
printf("%i", ia1); … printf("%i", ia10);
Das ist wirklich furchtbar aufwendig und unelegant. Das sind fast immer die gleichen Anweisungen, nur die "Nummer" der Variable a ändert sich. Für den Compiler ist das aber keine Nummer sondern ein Name wie jeder andere auch. Man kann aber Variablen durchnummerieren. Dann erhält man sogenannte Felder oder auch Arrays.
Deklaration: int ia[10];
Damit haben wir ein Feld der Länge 10 vom Typ Integer angelegt. Auf dieses Feld können wir nun zugreifen durch: ib=ia[2]; (Die Nummer in Klammern nennt sich INDEX)
Bei der Deklaration (und nur bei der Deklaration) kann dem Feld einzelne Werte durch geschweifte Klammern zugewiesen werden:
Int ia[4]={1,2,3,4};
ACHTUNG (!!): Der Compiler rechnet bei einer Variablen int ia[4]; bei Index von 0 bis 3 à Im obigen Beispiel hat deswegen ia[0] den Wert 1 und ia[3] den Wert 4.
Also Merke:
In der Deklaration gibt die Zahl in eckigen Klammern (nennen wir sie z) die Anzahl an Elementen im Feld an. Der verwendete Index geht von 0 bis (z-1) !
Wie kann ich nun den Index in for-Schleifen verwenden und mir beim obersten Beispiel viel Tipparbeit sparen ?
void main(void)
{ int ia[10], i;
for (i=0; i<10;I++)
{
scanf("%i", &ia[i]);
fflush(stdin);
}
for (i=0; i<10;I++)
printf("%i\n", &ia[i]);
}