c语言中,如果是二维或多维数组用指针加减运算,那算哪个?如 int a[5][5],*pa; pa=a;pa+2;那结果是指向a[

 我来答
牛悌0J8
2011-06-26 · TA获得超过801个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:423万
展开全部
pa指向a,pa指向a开头的int型数,pa指向a[0][0], 数组采用行优先存储,所以(pa+2)指向a[0][2]。
注意区分下列:
int (*p)[5],数组指针,将二维数组看成数组的数组,p指向数组的某一行。
int *p,指向数组中的某个元素。
int**p,指向指针的指针。
int *p[5],指针数组
当然楼上说的也有一定道理,但不同的编译器对于这个问题的处理是不一样,我用的gcc,直接打印警告,可以通过编译。如果想消除警告,建议采用强制类型转换。如:
pa=(int*)a,
或:pa=(int*)&a[0]。
kangkang574651
2011-06-26 · TA获得超过358个赞
知道答主
回答量:166
采纳率:0%
帮助的人:84.1万
展开全部
a[0][2]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xuxingxingvip
2011-06-26 · TA获得超过252个赞
知道小有建树答主
回答量:372
采纳率:70%
帮助的人:136万
展开全部
对于二维数组,p=a是非法的,他们的基类型不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户26114
2011-06-27 · TA获得超过131个赞
知道答主
回答量:469
采纳率:0%
帮助的人:313万
展开全部
两个问题:
1.输入k之后 ,要重新将 p 指向 a 即10行前+一句 p = a;
2.最后一个for越界,i=9 时 p+i+1 就成了 p+10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式