title: Two dimensional arrays and pointers
body: <p>I have the following code snippet:</p>
  
  <pre><code>char board[3][3] = {
                       {'1','2','3'},
                       {'4','5','6'},
                       {'7','8','9'}
                     };
  
  printf("address of board : %p\n", &amp;board);
  printf("address of board[0] : %p\n", &amp;board[0]);
  </code></pre>
  
  <p>Both <code>printf()</code> statements all print the same value: <code>0x0013ff67</code></p>
  
  <ol>
  <li><p>As per my knowledge, board (i.e) array name represents the address of the first subarray (i.e) <code>board[0]</code> and    </p></li>
  <li><p><code>board[0]</code> represents the address of first element in the first array (i.e) <code>board[0][0]</code>    </p></li>
  </ol>
  
  <p>Why am I getting the same address in all my <code>printf()</code> statements? I expect different addresses for both statements.</p>
  
  <p>I am pretty new to this stuff and don't understand this behavior. Kindly enlighten me. </p>