title: What's the difference between array and &array?
body: <p>Assume that</p>
  
  <pre><code>int array[16];
  </code></pre>
  
  <p>There is standard conversion called array-to-pointer conversion, so <code>array</code> would be converted implicitly to type <code>int*</code>,  but why <code>&amp;array</code> is equal to <code>array</code>?</p>
  
  <p>For instance,</p>
  
  <pre><code>int array[16];
  void *p = array;
  void *q = &amp;array;
  printf("%p\n", p);
  printf("%p\n", q);
  </code></pre>
  
  <p>This will give out the same address and no compiling error.</p>
  
  <p>Why?</p>