what's wrong with it
compiler shows:
cor.cpp:6:10: error: cannot convert ‘int (*)[10]’ to ‘int**’ in initialization

is it like b is a pointer that is an array of 10 1d arrays i.e, rows.
but what shall we write at line 6 to get rid of it.

#include <iostream>
using namespace std;
int main()
{
 int b[10][10];
 int **a=b;
 *(*(a+3)+1)=90;
 cout<<*(*(a+3)+1);
}

any suggestion would be of great help

I could be wrong but I do not think that you can access two dimensional arrays using pointer dereferencing like you are trying to do. Regardless I think it would be better to use a "fake" two-dimensional array like this:

int &access2DArray(int *array, int width, int height, int x, int y)
{
return *(array+(y*width)+x);
}