title: doubts about C pointers
body: <p>I am trying to understand basic concepts in C. I have two questions :</p>
  
  <p>1.Why will the following piece of code work and the other does not?</p>
  
  <pre><code>/* This works fine */
  typedef int SortTableRows[20]; 
  
  SortTableRows* SortTableRowsPtr;
  
  /* This will give error --&gt; subscripted value is neither array nor pointer*/
  int SortTableRows[20]; 
  
  SortTableRows* SortTableRowsPtr;
  </code></pre>
  
  <ol>
  <li><p>Second question is what is the third line of code doing?</p>
  
  <pre><code>typedef int SortTableRows[20]; 
  
  SortTableRows* SortTableRowsPtr;
  
  SortTableRowsPtr[2][3]=2; //Why the compiler doesnt give any error?how can we use a     pointer as a 2d array. 
  </code></pre></li>
  </ol>