title: Why is an ampersand operator used only sometimes to assign a pointer in C++?
body: <p>Can someone explain why assigning an array's memory address to a pointer isn't the same as assigning a 'normal' variable's to a pointer? (int a; int* p = &a;)</p>
  
  <p>I know for a fact that the ampersand in front of the array (&amp;arr) points to its memory address, so why doesn't it work to assign it to a pointer this way?</p>
  
  <pre><code>float* p;
  float arr[5];
  p = arr; // why is this correct 
  p = &amp;arr; // and this isn't
  </code></pre>