title: Difference between char *[] and char (*)[]
body: <p>What is the difference between</p>
  
  <p><code>char *array[10];</code></p>
  
  <p>and</p>
  
  <p><code>char (*array)[10];</code> ?</p>
  
  <p>By my understanding,</p>
  
  <ul>
  <li><strong>Case 1:</strong> 
  <ul>
  <li><code>array</code> is declared as an array of character arrays of size 10.</li>
  <li>This is because <code>[]</code> has higher precedence than <code>*</code>.</li>
  </ul></li>
  <li><strong>Case 2:</strong> 
  <ul>
  <li><code>array</code> is declared as a pointer to a character array of size 10.</li>
  <li>This is because <code>()</code> and <code>[]</code> have the same precedence and they are evaluated from left-to-right. Then the <code>*</code> operator is evaluated.</li>
  </ul></li>
  </ul>
  
  <p>Is my understanding correct? Even if it is correct, I get incredibly confused. Can someone please explain the difference a little more clearly?</p>