1 #include <stdio.h> 2 #include <string.h> 3 4 int main()5main() { 6 int i = 19; 7 char buf[i]; 8 char (*gnu)[i]; 9 10 gnu = &buf; 11 12 strcpy(*gnu, "nonsense"); 13 puts(buf); 14 15 if (gnu == &buf) { 16 puts("gud"); 17 } else { 18 puts("bad"); 19 } 20 21 ++gnu; 22 if (gnu == &buf) { 23 puts("bad2"); 24 } else { 25 puts("gud2"); 26 } 27 28 /* Verify that the increment worked properly */ 29 printf("%u\n", (unsigned)((char *)gnu - (char *)buf)); 30 31 --gnu; 32 /* Verify that the decrement worked properly */ 33 printf("%u\n", (unsigned)((char *)gnu - (char *)buf)); 34 35 /* Try increment/decrement with +/- operators instead */ 36 gnu += 1; 37 printf("%u\n", (unsigned)((char *)gnu - (char *)buf)); 38 gnu -= 1; 39 printf("%u\n", (unsigned)((char *)gnu - (char *)buf)); 40 } 41 42