title: Why does a C array decay to a pointer when passed with size
body: <p>I understand why an array decays to a pointer when passed to a function without specifying its size, eg.:</p>
  
  <pre><code>void test(int array[]);
  </code></pre>
  
  <p>Why does it do so when passed with the size? eg.</p>
  
  <pre><code>void test(int array[3]);
  </code></pre>
  
  <p>I am having trouble with <code>sizeof</code> under the latter function signature, which is frustrating as the array length is clearly known at compile time.</p>