C语言 指针引用二维数组 为什么

二维数组在内存里面也是线性排列的,为什么直接int*p=a;(a为一个二维数组)不行,求解释原理!!!... 二维数组在内存里面也是线性排列的,为什么直接int *p=a;(a为一个二维数组)不行,求解释原理!!! 展开
 我来答
ylcqucc
2015-01-21 · TA获得超过1436个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:337万
展开全部
在C语言中,实际上,没有真正的多维数组,只有一维数组

所谓的二维数组,只不过是,一个一维数组中,每个元素的类型,本身又是一维数组而已

因此,定义指向二维数组的指针,实际上,是定义一个指向包含多少个元素的一维数组的指针

比如:

int a[3][4];
int (*p)[4]; //定义一个指向包含4个元素的一维数组的指针
p=a; //指针p指向二维数组a
yly_fly
2015-01-21 · TA获得超过1623个赞
知道大有可为答主
回答量:1441
采纳率:63%
帮助的人:711万
展开全部
要int **p=a;才行。
因为int *p定义的p是指向int型变量的,而二维数组a表示指向数组的指针,也就是指向指针的指针,所以类型不同,不能直接赋值。
追问
报错
追答
楼下正解。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinalande
2015-01-21 · 超过79用户采纳过TA的回答
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:98.4万
展开全部
类型不同,一个是数组指针,一个整形指针,定义同类型的就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ap0711215
2015-01-21 · TA获得超过139个赞
知道小有建树答主
回答量:130
采纳率:50%
帮助的人:49.8万
展开全部
首先,int *p是定义一个int类的指针(地址),a是一个二维数组,你的意思是不是要p指向a数组?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式