error C2440: 'initializing' : cannot convert from 'int [3][3]' to 'int ** '
inta[3][3];int**p=a;errorC2440:'initializing':cannotconvertfrom'int[3][3]'to'int**'二级...
int a[3][3];
int **p = a;
error C2440: 'initializing' : cannot convert from 'int [3][3]' to 'int ** '
二级指针为什么不对? 展开
int **p = a;
error C2440: 'initializing' : cannot convert from 'int [3][3]' to 'int ** '
二级指针为什么不对? 展开
展开全部
严格来说 int **和int [][]还是有一些区别的
在有些情况下可以通用,有些时候就不行了
比如 int a[3][3]可以直接用a[1][2]访问元素
但是p=a之后,用p[1][2]访问就一定会出错
虽然他们的本质都是二级指针
在C的编译器中,这样的写法是可以编译过的 但是会报warning
在C++中,这样写就会报错误了
如果你一定要这样赋值,可以通过强制转换
int **p = (int **)a;
但是一定要清楚你在做什么 因为接下来的操作可能不是你想要的结果
在有些情况下可以通用,有些时候就不行了
比如 int a[3][3]可以直接用a[1][2]访问元素
但是p=a之后,用p[1][2]访问就一定会出错
虽然他们的本质都是二级指针
在C的编译器中,这样的写法是可以编译过的 但是会报warning
在C++中,这样写就会报错误了
如果你一定要这样赋值,可以通过强制转换
int **p = (int **)a;
但是一定要清楚你在做什么 因为接下来的操作可能不是你想要的结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询