title: What is the difference between typedef int array[3] and typedef int(array)[3]?
body: <p>I recently came across this unorthodox way to define a int array type:</p>
  
  <pre><code>typedef int(array)[3];
  </code></pre>
  
  <p>At first I thought it was an array of function pointers but then I realized that the <code>*</code> and the <code>()</code> were missing, so by looking into the code I deduced the type array was a <code>int[3]</code> type instead. I normally would declare this type as:</p>
  
  <pre><code>typedef int array[3];
  </code></pre>
  
  <p>Unless I'm mistaken that they are not the same thing, what is the advantage of doing so in the former way other than to make them look similar to a function pointer?</p>