Auch Teilinitialisierungen komplexer Datentypen sind möglich:
VERBATIM/b271a: #define MAX 512 int i = 1; int m = MAX / 2; double pi = 3.14159; char c = 'a'; char space = ' ', tab = '\t'; char f2[] = "Programm"; /* analog f1 */ char f1[] = {'P','r','o','g','r','a','m','m','\0'}; char *first = &buf[0]; /* first = buf */ char *last = &buf[MAX - 1]; /* letztes Element */
VERBATIM/b271b: static int feld[5] = {0, 1, 2}; /* feld[3] = 0; */ /* feld[4] = 0; */ struct datum { short jahr; char monat[4]; short tag; } heute = {1992, "Okt" ,12}; static char *keys[] = {"if","else",...}; static int a[2][3] = { /* Init. "zeilenweise" */ { 5, 5, 5 }; { 4, 4, 4 }; }; /* ohne {} analog */ static int b[2][3] = { { 5 }; /* b[0][0] */ { 4 }; /* b[1][0] */ }; /* Rest hat Wert 0 */
BEISPIELE/b27.c: /* Initialisierung */ #include <stdio.h> #define N 3.5 double d = N; char buf[] = "Text zum Test "; char *bp = buf; int feld[5] = {1,2,3}; static char *str[] = {"eins", "zwei", "drei"}; main() { int i; printf("%s %f %d %s\n", bp, d, *feld, *str); for (i=0; i<4; i++) printf("%d %d %s %c\n",i,feld[i],str[i],(bp+i)[0]); }