title: Pointers : difference between * and (int *) in given context
body: <pre><code>int ar[3][3]={{1,2,3},{4,5,6},{7,8,9}};
  
  statment1:  int k=(int *)((int *)(ar+1)+2);
  statment2:  int l=*(*(ar+1)+2);
  statement3  int *p = (int *)a +1;
  </code></pre>
  
  <p>Statement1 does not compile. 
  Statement2 and Statement3 compiles.
  Now, I cannot make out what difference does it make if I put <code>(int *)</code> instead of <code>*</code>, given that the array is of integer type.</p>