If I have this
 int (*p)[2];
and try to do
 *(*(p))=5;
it will throw segFault. it should.
But if I have
  char (*p)[2];
  *(*(p))=5; //works
  *(*(p+1))=7; //works
Can some one explain why pointer to 2d char array treated differently than pointer to 2 d int array in C
 
    