看一个C程序

已知有inta[2][3],*p=&a[0][0];则对数组元素a[1][2]的地址的正确表示形式为:A.*(p+1)+2B.&a[1]+2C.p[1]+2D.*(a+1... 已知有int a[2][3],*p=&a[0][0];则对数组元素a[1][2]的地址的正确表示形式为:
A.*(p+1)+2
B.&a[1]+2
C.p[1]+2
D.*(a+1)+2
答案是D。有两个问题:
A不对么?p[1]表示什么?
展开
 我来答
q86456378q
2013-06-22 · 超过34用户采纳过TA的回答
知道答主
回答量:102
采纳率:100%
帮助的人:62.7万
展开全部
由优先级关系A相当于*((p+1)+2),p是指向第一元素的,向后移动了3个元素后指向了第四个元素,也就是a[1][0]

B打印的是第二行的地址向后偏移2个int单位的内在地址值

p[1]表示数组第一个元素 ,所以C和A表示的值是一样的
追问
A怎么不对呢?
追答
之前 看错了

由优先级关系A相当于p[1] + 2,p是指向第一元素的,相当于a[1] + 2

B打印的是第二行的地址向后偏移2个int单位的内在地址值

p[1]表示数组第二个元素的值 ,所以C和A表示的值是一样的

p和[]结合表示的是指针的值,
p和()结合表示的是指针的地址
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式