title: Only compiles as an array of pointers, not array of arrays
body: <p>Suppose I define two arrays, each of which have 2 elements (for theoretical purposes):</p>
  
  <pre><code>char const *arr1[] = { "i", "j" };
  char const *arr2[] = { "m", "n" };
  </code></pre>
  
  <p>Is there a way to define a multidimensional array that contains these two arrays as elements?  I was thinking of something like the following, but my compiler displays warnings about incompatible types:</p>
  
  <pre><code>char const *combine[][2] = { arr1, arr2 };
  </code></pre>
  
  <p>The only way it would compile was to make the compiler treat the arrays as pointers:</p>
  
  <pre><code>char const *const *combine[] = { arr1, arr2 };
  </code></pre>
  
  <p>Is that really the only way to do it or can I preserve the type somehow (in C++, the runtime type information would know it is an array) and treat <code>combine</code> as a multidimensional array?  I realise it works because an array name is a const pointer, but I'm just wondering if there is a way to do what I'm asking in standard C/C++ rather than relying on compiler extensions.  Perhaps I've gotten a bit too used to Python's lists where I could just throw anything in them...</p>