title: c++ pass array by value or pointer to function syntax
body: <p>Could somebody explain the difference between these two function declarations below please? As far I know, <code>aDecay()</code> takes a pointer as an argument and if you have an integer <code>int a[5]</code> you can call <code>aDecay(a)</code> or <code>aDecay(&amp;a[0]</code> because an array decays to a pointer.</p>
  
  <p>Now if I want to call <code>pDecay()</code> I have to use <code>pDecay(&amp;a)</code>.</p>
  
  <p>How does pDecay force you to use the <code>&amp;</code>.  </p>
  
  <pre><code>void aDecay(int *p)
  void pDecay(int (*p)[7])
  </code></pre>