title: Incompatible pointer type
body: <p>I have the function with following signature:</p>
  
  <pre><code>void box_sort(int**, int, int)
  </code></pre>
  
  <p>and variable of following type:</p>
  
  <pre><code>int boxes[MAX_BOXES][MAX_DIMENSIONALITY+1]
  </code></pre>
  
  <p>When I am calling the function</p>
  
  <pre><code>box_sort(boxes, a, b)
  </code></pre>
  
  <p>GCC gives me two warnings:</p>
  
  <pre><code>103.c:79: warning: passing argument 1 of ‘box_sort’ from incompatible pointer type (string where i am calling the function)
  103.c:42: note: expected ‘int **’ but argument is of type ‘int (*)[11] (string where the function is defined)
  </code></pre>
  
  <p>The question is <em>why</em>? Whether int x[][] and int** x (and actually int* x[]) are not the same types in C?</p>