title: Dereferencing a Two Dimensional Array In C
body: <p>I'm having some difficulties understanding two dimensional arrays in C.<br/>
  Let's look at this example:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  
  void foo(int arr[2][3]) {
      printf("%d", *arr); 
  }
  
  int main() {
      int arr[2][3] = {   {10, 20, 30}, 
                          {40, 50, 60}
                      };
      foo(arr);
      return 0;
  }
  </code></pre>
  
  <p><br>
  I have a few questions:<br/></p>
  
  <ol>
  <li>What is the value of <strong>arr</strong>? Is it the address of arr[0][0]?<br/></li>
  <li>If <strong>arr</strong> is the address of arr[0][0], then why the line: <br/>
   <em>printf("%d", *arr);</em><br/>doesn't print the value 10?</li>
  <li>Each time I run it, I get a strange number. what is the meaning of this number?</li>
  </ol>
  
  <p>Thanks :)</p>