fork download
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4. int a[] = {10, 20, 30 ,40, 50};
  5. int *p = a;
  6. int (*q)[5] = &a;
  7.  
  8. printf("sizeof(int) = %zu\n", sizeof(int)); // 4
  9. printf("sizeof p = %zu\n", sizeof p); // 8
  10. printf("sizeof q = %zu\n", sizeof q); // 8
  11. printf("&a = %p\n", (void *)&a); // 0x1000
  12. printf("&p = %p\n", (void *)&p); // 0x2000
  13. printf("&q = %p\n", (void *)&q); // 0x3000
  14.  
  15. printf("*a = %d\n", *a);
  16. printf("a[3] = %d\n", a[3]);
  17. printf("*(a + 3) = %d\n", *(a + 3));
  18. printf("(a + 2)[1] = %d\n", (a + 2)[1]);
  19. printf("(1 + a)[2] = %d\n", (1 + a)[2]);
  20. printf("*(3 + a) = %d\n", *(3 + a));
  21. printf("3[a] = %d\n", 3[a]);
  22. printf("2[a + 1] = %d\n", 2[a + 1]);
  23.  
  24. printf("a + 1 = %p\n", (void *)(a + 1));
  25. printf("&a[1] = %p\n", (void *)&a[1]);
  26. printf("&a[1] + 1 = %p\n", (void *)(&a[1] + 1));
  27. printf("&*a = %p\n", (void *)&*a);
  28. printf("&*a + 1 = %p\n", (void *)(&*a + 1));
  29. printf("&a + 1 = %p\n", (void *)(&a + 1));
  30.  
  31. printf("*p = %d\n", *p);
  32. printf("p[3] = %d\n", p[3]);
  33. printf("*(p + 3) = %d\n", *(p + 3));
  34. printf("(p + 2)[1] = %d\n", (p + 2)[1]);
  35. printf("(1 + p)[2] = %d\n", (1 + p)[2]);
  36. printf("*(3 + p) = %d\n", *(3 + p));
  37. printf("3[p] = %d\n", 3[p]);
  38. printf("2[p + 1] = %d\n", 2[p + 1]);
  39.  
  40. printf("p + 1 = %p\n", (void *)(p + 1));
  41. printf("&p[1] = %p\n", (void *)&p[1]);
  42. printf("&p[1] + 1 = %p\n", (void *)(&p[1] + 1));
  43. printf("&*p = %p\n", (void *)&*p);
  44. printf("&*p + 1 = %p\n", (void *)(&*p + 1));
  45. printf("&p + 1 = %p\n", (void *)(&p + 1));
  46.  
  47. printf("**q = %d\n", **q);
  48. printf("(*q)[3] = %d\n", (*q)[3]);
  49. printf("*(*q + 3) = %d\n", *(*q + 3));
  50. printf("(*q + 2)[1] = %d\n", (*q + 2)[1]);
  51. printf("(1 + *q)[2] = %d\n", (1 + *q)[2]);
  52. printf("*(3 + *q) = %d\n", *(3 + *q));
  53. printf("3[*q] = %d\n", 3[*q]);
  54. printf("2[*q + 1] = %d\n", 2[*q + 1]);
  55.  
  56. printf("*q + 1 = %p\n", (void *)(*q + 1));
  57. printf("&(*q)[1] = %p\n", (void *)&(*q)[1]);
  58. printf("&(*q)[1] + 1 = %p\n", (void *)(&(*q)[1] + 1));
  59. printf("&**q + 1 = %p\n", (void *)(&**q + 1));
  60. printf("&*q + 1 = %p\n", (void *)(&*q + 1));
  61. printf("&q + 1 = %p\n", (void *)(&q + 1));
  62. // your code goes here
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0s 5256KB
stdin
Standard input is empty
stdout
sizeof(int) = 4
sizeof p = 8
sizeof q = 8
&a = 0x7ffd502b2410
&p = 0x7ffd502b2400
&q = 0x7ffd502b2408
*a = 10
a[3] = 40
*(a + 3) = 40
(a + 2)[1] = 40
(1 + a)[2] = 40
*(3 + a) = 40
3[a] = 40
2[a + 1] = 40
a + 1 = 0x7ffd502b2414
&a[1] = 0x7ffd502b2414
&a[1] + 1 = 0x7ffd502b2418
&*a = 0x7ffd502b2410
&*a + 1 = 0x7ffd502b2414
&a + 1 = 0x7ffd502b2424
*p = 10
p[3] = 40
*(p + 3) = 40
(p + 2)[1] = 40
(1 + p)[2] = 40
*(3 + p) = 40
3[p] = 40
2[p + 1] = 40
p + 1 = 0x7ffd502b2414
&p[1] = 0x7ffd502b2414
&p[1] + 1 = 0x7ffd502b2418
&*p = 0x7ffd502b2410
&*p + 1 = 0x7ffd502b2414
&p + 1 = 0x7ffd502b2408
**q = 10
(*q)[3] = 40
*(*q + 3) = 40
(*q + 2)[1] = 40
(1 + *q)[2] = 40
*(3 + *q) = 40
3[*q] = 40
2[*q + 1] = 40
*q + 1 = 0x7ffd502b2414
&(*q)[1] = 0x7ffd502b2414
&(*q)[1] + 1 = 0x7ffd502b2418
&**q + 1 = 0x7ffd502b2414
&*q + 1 = 0x7ffd502b2424
&q + 1 = 0x7ffd502b2410