fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int a[4];
  5. int *b = malloc(16);
  6. int *c;
  7. int i;
  8.  
  9. printf("1: a = %p, b = %p, c = %p\n", a, b, c);
  10.  
  11. c = a;
  12. for (i = 0; i < 4; i++)
  13. a[i] = 100 + i;
  14. c[0] = 200;
  15.  
  16. // 200, 101, 102, 103
  17. printf("2: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
  18. a[0], a[1], a[2], a[3]);
  19.  
  20. c[1] = 300;
  21. *(c + 2) = 301;
  22. 3[c] = 302;
  23.  
  24. // 200, 300, 301, 302
  25. printf("3: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
  26. a[0], a[1], a[2], a[3]);
  27.  
  28. c = c + 1;
  29. *c = 400;
  30.  
  31. // 200, 400, 301, 302
  32. printf("4: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
  33. a[0], a[1], a[2], a[3]);
  34.  
  35. c = (int *) ((char *) c + 1);
  36. *c = 500;
  37.  
  38. // 200, 128114, 256, 302 ......??
  39. printf("5: a[0] = %d, a[1] = %d, a[2] = %d, a[3] = %d\n",
  40. a[0], a[1], a[2], a[3]);
  41.  
  42. b = (int *) a + 1;
  43. c = (int *) ((char *) a + 1);
  44.  
  45. // a, a+4, a+1
  46. printf("6: a = %p, b = %p, c = %p\n", a, b, c);
  47.  
  48. return 0;
  49. }
  50.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
1: a = 0x7ffe7d4fd3e0, b = 0x2b7d5b1b9010, c = (nil)
2: a[0] = 200, a[1] = 101, a[2] = 102, a[3] = 103
3: a[0] = 200, a[1] = 300, a[2] = 301, a[3] = 302
4: a[0] = 200, a[1] = 400, a[2] = 301, a[3] = 302
5: a[0] = 200, a[1] = 128144, a[2] = 256, a[3] = 302
6: a = 0x7ffe7d4fd3e0, b = 0x7ffe7d4fd3e4, c = 0x7ffe7d4fd3e1