我们来看一段代码

1
2
3
4
5
6
7
8
void f(int **a)
{

}
int main(){
int a[2][2];
f(a);
}

这个代码是会报错的,error: cannot convert 'int (*)[2]' to 'int**'

很明显,二维数组名不是指向指针的指针(int **),而是一个指向数组的指针int (*)[2]

如果非要用指针的指针,可以这样

1
2
3
4
5
6
7
int c[3]={1,2,2};
int d[3]={4,5,6};

int **a
a = new int *[2];
*(a)=c;
*(a+1)=d;