speicherklasse typ bezeichner [konst_ausdruck]
konst_ausdruck muss einen Integerwert ergeben.
VERBATIM/b221a: #define N 1000 ... float farray[10]; /* 10 Elemente vom Typ float */ char string[100]; /* Zeichenfeld für 100 Zeichen */ long z[N]; /* 1000 long-Elemente */
BEISPIELE/b221a.c: #include <stdio.h> #define N 10 main() { int f[N], i; /* f ist ein Feld mit 10 int-Elementen */ i = 0; /* i dient als Index */ while(i < N) /* f[0] bis f[9] sind Feldelemente */ f[i++] = 0; /* alle Feldelemente auf 0 setzen */ printf("i= %d\n", i); }
BEISPIELE/b221b.c: #include <stdio.h> #define YES 1 #define NO 0 #define VON 100 #define BIS 250 #define ANZ 5 main() /* Primzahlberechnung: Sieb des Erathostenes */ { short prim_anz[ BIS+1 ]; int i, j, k, n; printf("Berechnung der Primzahlen von %d bis %d: \n", VON, BIS); n=BIS; i=2; /* Init feld prim_anz */ while ( i <= n ) prim_anz[i++] = YES; i=2; k=1; while ( i <= n ) { if (prim_anz[i]) { j = i; if ( i >= VON ) printf(" %6d%c", i, k++ % ANZ ? '\t' : '\n'); while (i*i < n && ( j += i ) <= n ) prim_anz[j] = NO; } i++; } printf("\n"); }
strlen(s) /* Länge des Zeichenfeldes s */ strcpy(s1,s2) /* Kopieren von s2 nach s1 */ strcmp(s1,s2) /* Vergleich von s1 und s2 */ strncmp(s1,s2,n) /* Vergleich von max. n Zeichen */ strcat(s1,s2) /* Kopiere s2 an Ende von s1 */ strchr(s,c) /* Suche Zeichen c in String s */
VERBATIM/b221b: void strcpy(s1, s2) /* kopiert Zeichenfeld s2 nach s1 */ char s1[], s2[]; { int i; i=0; while(s1[i] = s2[i]) i++; }
Es erfolgt eine zeilenweise Abspeicherung der Elemente (der letzte Index ändert sich am schnellsten):
float a [ N ] [ N ]; /* N x N Matrix */ short b [ 2 ] [ 4 ] [ 3 ]; /* 2 x 4 x 3 Feld */
b[0][0][0], b[0][0][1], b[0][0][2], b[0][1][0], ...