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 ** '
二级指针为什么不对?
展开
 我来答
风若远去何人留
推荐于2016-09-05 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450110
专业C/C++软件开发

向TA提问 私信TA
展开全部
严格来说 int **和int [][]还是有一些区别的
在有些情况下可以通用,有些时候就不行了
比如 int a[3][3]可以直接用a[1][2]访问元素
但是p=a之后,用p[1][2]访问就一定会出错
虽然他们的本质都是二级指针
在C的编译器中,这样的写法是可以编译过的 但是会报warning
在C++中,这样写就会报错误了
如果你一定要这样赋值,可以通过强制转换
int **p = (int **)a;
但是一定要清楚你在做什么 因为接下来的操作可能不是你想要的结果
百度网友7ee05ad
2013-11-19 · 超过35用户采纳过TA的回答
知道答主
回答量:145
采纳率:0%
帮助的人:102万
展开全部
做个强制转换吧,int **p = (int**)a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式