1 #include <stdio.h> 2 3 struct lame { 4 int x; 5 int y; 6 }; 7 8 struct bogus { 9 void *p; 10 } bogus1, bogus2, 11 *bp1, *bp2; 12 13 int main(void)14main(void) { 15 struct lame ar[8]; 16 void *p = ar; 17 void *p2 = ar+2; 18 void *res = NULL; 19 int i; 20 21 bp1 = &bogus1; 22 bp2 = &bogus2; 23 bp1->p = p; 24 bp2->p = p2; 25 26 for (i = 0; i < 8; ++i) { 27 if (i == 1) { 28 continue; 29 } 30 31 printf("=%d\n", &ar[i] != bp1->p); 32 printf(" =%d\n", &ar[i] != bp2->p); 33 if (&ar[i] != bp1->p 34 && &ar[i] != bp2->p) { 35 res = &ar[i]; 36 break; 37 } 38 } 39 if (res == NULL) { 40 puts("terrible bug. very irritating."); 41 return 666/*terror*/-69/*destruction*/-13/*horrors*/; 42 } else { 43 puts("all is good. more or less"); 44 } 45 printf("result is %d(%d)\n", (char *)res - (char *)ar, i); 46 return 0; 47 } 48 49