title: confusing with c string array with point and negative indexes
body: <p>in the following code (final exam) , the position of cpp pointer don't change, so, how cpp[-1][-1] == cpp [0][0] ?</p>
  <pre><code>char *c[]={&quot;ENTER&quot;, &quot;NEW&quot;, &quot;POINT&quot;, &quot;FIRST&quot;};
  char **cp[]={c+3,c+2,c+1,c}; // FIRST, POINT, NEW, ENTER
  char ***cpp=cp;             // FIRST,POINT,NEW,ENTER 
  
  int main()
  {
    ++cpp;        // POINT
    ++cpp;        // NEW
   
    printf(&quot;cpp[0][0]     %s \n&quot; , cpp [0][0]);           // NEW
   
    // how is cpp [-1][-1] == cpp [0][0]
     printf(&quot;cpp [-1][-1]     %s \n&quot; , cpp [-1][-1]);     // NEW 
              
    // how is cpp [0][1] == POINT
    printf(&quot;cpp [0][1]        %s \n&quot; , cpp [0][1]);       //POINT
     
    printf(&quot;cpp [-1][-1]+1        %s \n&quot; , cpp [-1][-1]+1);//EW
  
  </code></pre>