title: Is 2d array a double pointer?
body: <pre><code>int main()
  {
      matrix[2][4] = {{11,22,33,99},{44,55,66,110}};
      int **ptr = (int**)matrix;
      printf("%d%d",**matrix,*ptr);
  }
  </code></pre>
  
  <p>But when a 2-d array is passed as a parameter it is typecasted into (*matrix)[2] ..
  what type does the compiler store this array as... is it storing as a 2-d array or a double pointer or an pointer to an array .. If it is storing as an array how does it interprets differently at different situations like above. Please help me understand.</p>