typedef struct { int codes[3]; char name[6]; } Word; Word words[] = { 1, 2, 3, "if", { { 4, 5 }, { 'f', 'o', 'r' } }, 6, 7, 8, {"else"}, { { 9, 10, 11,}, 'w', 'h', 'i', 'l', 'e', }, { 0 }, }, *wordlist = words; int x[][5] = { 1, 2, 3, 4, 0, { 5, 6 }, { 7 } }; int *y[] = { x[0], x[1], x[2], 0 }; main() { int i, j; for (i = 0; y[i]; i++) { for (j = 0; y[i][j]; j++) printf(" %d", y[i][j]); printf("\n"); } f(); g(wordlist); return 0; } f() { static char *keywords[] = {"if", "for", "else", "while", 0, }; char **p; for (p = keywords; *p; p++) printf("%s\n", *p); } g(p) Word *p; { int i; for ( ; p->codes[0]; p++) { for (i = 0; i < sizeof p->codes/sizeof(p->codes[0]); i++) printf("%d ", p->codes[i]); printf("%s\n", p->name); } h(); } h() { int i; for (i = 0; i < sizeof(words)/sizeof(Word); i++) printf("%d %d %d %s\n", words[i].codes[0], words[i].codes[1], words[i].codes[2], &words[i].name[0]); }