title: dereference a pointer to a pointer casted from array pointer
body: <p>Learning C and this confusing me:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  int main(){
      int m[5][5];
      int count = 0;                                                                                                         
      for(int i = 0; i &lt; 5; i++){                                                                                                    
          for(int j = 0; j &lt; 5; j++){
              m[i][j] = count++;
          }
      }                                                                                                                     
      int **p = m;                                                                                                          
      int (*k)[5] = m;                                                                                                      
      printf("%p\t%p\t%p", *p, *k, *m);                                                                                     
      return 0;
  } 
  </code></pre>
  
  <p>that's what has been printed:
  <code>0x100000000     0x7ffff1fc9d70  0x7ffff1fc9d70</code></p>
  
  <p>I'm really confused why dereference *p is <code>0x100000000</code>, shouldn't it be <code>0x7ffff1fc9d70</code>?</p>