title: dereference pointer to an array
body: <p>I have a basic doubt, when we de-reference a pointer to an array why we get name of the array instead the value of first member of an array, I see this has been asked here but I didn't get it
  exactly how?</p>
  <p><a href="https://stackoverflow.com/questions/1083488/dereferencing-pointer-to-integer-array">dereferencing pointer to integer array</a></p>
  <pre><code>
  main()
  {
      int var[10] = {1,2,3,4,5,6,7,8,9,10};
      int (*ptr) [10] = &amp;var;
  
      printf(&quot;value = %u %u\n&quot;,*ptr,ptr);  //both print 2359104. Shouldn't *ptr print 1?
  
  
  }
  </code></pre>
  <p>So, is it like when we dereference a pointer, it cancel out the reference operator and what we get is variable name, and in case of pointer to an array, it is the array name ?</p>
  <pre><code>main()
  {
     int a = 10;
     int *p = &amp;a;
  
     printf(&quot;%d\n&quot;, *p) /* p = &amp;a; *p = *(&amp;a); and having a dereference cancel out the &amp;, gives us *p = a ? */
  }
  </code></pre>