title: How does de-referencing work for pointer to an array?
body: <p>Pointer to array of elements when dereferenced return an address.
  Since it is holding the address of the first element of the array, dereferencing it should return a value.</p>
  
  <pre><code>int arr[] = { 3, 5, 6, 7, 9 }; 
  int *p = arr; 
  int (*ptr)[5] = &amp;arr;     
  printf("p = %p, ptr = %p\n", p, ptr); 
  printf("*p = %d, *ptr = %p\n", *p, *ptr);
  </code></pre>
  
  <p>Output:</p>
  
  <p>p = 0x7fff6ea72d10, ptr = 0x7fff6ea72d10</p>
  
  <p>*p = 3, *ptr = 0x7fff6ea72d10</p>
  
  <p>Why does *ptr return the base address of the array, shouldn't it return the value at that address??</p>