よくわかりません。
int *ip, i;
int *ap, array[10];
ip = &i; ap = array;
*ipも*apも整数の値が出てきますよね。

int b[5][5];
のとき
int *bp1 = b;も int **bp2 = b;もコンパイラに怒られます。
*bp1とすると整数が取り出せるんだから、int *で良いような気がするのですが。
それとも、*bp2とすると、どこかへのポインタが得られるんでしょうか?