看一个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]表示什么? 展开
A.*(p+1)+2
B.&a[1]+2
C.p[1]+2
D.*(a+1)+2
答案是D。有两个问题:
A不对么?p[1]表示什么? 展开
1个回答
展开全部
由优先级关系A相当于*((p+1)+2),p是指向第一元素的,向后移动了3个元素后指向了第四个元素,也就是a[1][0]
B打印的是第二行的地址向后偏移2个int单位的内在地址值
p[1]表示数组第一个元素 ,所以C和A表示的值是一样的
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和()结合表示的是指针的地址
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询