title: Are these three dimensional arrays legal in C?
body: <p>My professor’s final exam mostly consisted of very tricky syntax. For example, some of his questions were like "use pointer 1 to print out the letter k without using brackets. Luckily it was open book.</p>
  
  <p>So one question was:</p>
  
  <pre><code>int a[2][2][2] = {{5,6}, {7,8}, {9,10}, {11,12}}; 
  </code></pre>
  
  <p>write a printf statement that will print out "7910". <strong>Using pointers without using square brackets.</strong></p>
  
  <p>At first, I thought this was a typo or an illegal array. I thought the array is supposed to stop at the third array from the left.</p>
  
  <p>I wrote:</p>
  
  <pre><code>printf("%d%d%d\n",*(*(a+1)+1)),*(*(a+2)),*(*(a+2)));
  </code></pre>
  
  <p>I put this because if the array was</p>
  
  <pre><code>int a[2][2] = {{7,8},{11,12}};
  </code></pre>
  
  <p>a syntax similar would work.</p>
  
  <p>So was this a typo? If not, what is the right syntax?</p>