Arrays (Felder) kann man mit allen Datentypen int, float, char bilden. Wir beginnen mit int und float , weil die am leichtesten zu verstehen sind. Dann werden wir mehrdimensionale int und float Arrays kennenlernen und abschließend char Arrays (Zeichenketten).
Um eine ganze Zahl oder eine Gleitkommazahl zu
definieren würden man schreiben.
main()
{
int Count; /* integer variable */
float Miles; /* floating point variable */
}
Die Syntax für ein Array ist:
main()
{
int Count[5]; /* 5 element integer array */
float Miles[10]; /* 10 element floating point array */
}
Beachten Sie, daß die einzelnen Elemente mit 0 (Null) beginnend indexiert werden. 'Count' enthält also die Elemente 0, 1, 2, 3, 4.
Um das fünfte Element zu verändern, schreibt man:
main()
{
int Count[5];
Count[4] = 20; /* code 4 to update the 5th element */
}
So kann man 'Count' bei dessen Definition initialisieren:
main()
{
int i;
int Count[5]={10, 20, 30};
for (i=0; i<5; i++) { printf("%d ", Count[i]); } puts(""); }
Das Ergebnis ist:
10 20 30 0 0
Wie man in diesem Beispiel sieht, werden Elemente, die nicht initialisiert werden, auf 0 gesetzt.
Noch ein Hinweis. Wenn alle Elemente bei der Definition eines Arrays auch initialisiert werden, kann der Compiler die Anzahl der Elemente berechnen. Im folgenden Beispiel wird ein Array mit 3 Elementen erzeugt.
main()
{
int i;
int Count[]={10, 20, 30};
}
Alles bisher gesagte gilt genauso für Arrays vom Typ float.
C unterstützt eigentlich keine mehrdimensionalen Arrays aber man kann sie simulieren.
main()
{
int Count[5];
int Matrix[10][4];
}
Count wurde schon besprochen, hier definiert es ein Array mit 5 Elementen.
Matrix wird definiert als ein Array mit 10 Elementen wobei jedes 4 Elemente enthält.
Um Matrix bei seiner Definition zu initialisieren schreibt man.
main()
{
int Matrix[4][2]={{1, 2},
{3, 4},
{5, 6},
{7, 8}};
}
Beachten Sie, daß das letzte Element Matrix[3][1] ist.
char Arrays funktionieren genau wie int und float Arrays.
main()
{
char Letter;
char Letters[10];
}
'Letter' kann nur ein Zeichen aufnehmen, aber das 'Letters' Array kann 10 Zeichen enthalten. Man muß sich 'Letters' als Array vorstellen, nicht als Zeichenkette.
Um 'char' Variablen zu initialisieren, verwendet man folgende Syntax.
main()
{
char Letter='x';
char Letters[10]='f','a','x',' ','m','o','d','e','m','\0';
char Text[10]="fax modem";
}
Beachten Sie, daß " " eine Zeichenkette beschreibt. Deshalb wird das NULL Zeichen automatisch hinzugefügt. Text kann nur an dieser Stelle auf diese Art in einem Array abgelegt werden. Verwenden Sie strcpy, wenn Sie den Inhalt eines Arrays ändern wollen.
Zweidimensionale Arrays werden anders behandelt. Wir können die oben eingeführten Regeln verwenden, um ein Array zu definieren.
main()
{
char Colours[3][6]={"red","green","blue"};
printf ("%c \n", Colours[0][0]); /* O/P 'r' */
printf ("%s \n", Colours[1]); /* O/P 'green' */
}
Es werden 18 aufeinanderfolgende Bytes reserviert und drei Zeiger darauf angelegt.
---------------------
|red \0green\0blue \0|
---------------------
A A A
| | |
Colours[0] ---- | |
Colours[1] ----------- |
Colours[2] ------------------
Hier werden Zeiger genauer erklärt.