c语言若有下列说明和语句:int a[4][5], (*p)[5]; p = a; 则对a数组元素

c语言若有下列说明和语句:inta[4][5],(*p)[5];p=a;则对a数组元素的正确引用A)p+1B)*(p+3)C)*(p+1)+3D)*(*p+2)答案是D。但我不知道为什么,请帮我解释详细一点,谢谢!... c语言若有下列说明和语句:int a[4][5], (*p)[5]; p = a; 则对a数组元素的正确引用 A) p+1 B) *(p+3) C) *(p+1)+3 D) *(*p+2) 答案是D。但我不知道为什么,请帮我解释详细一点,谢谢! 展开

首先呢,a是二维数组,不解释。
然后呢,p是一个指针,什么样的指针呢,就是指向一维数组的指针,而且这个一维数组的元素个数呢是5.
然后呢,p=a;就是把p指向a数组。
分析选项:
A
p+1
.因为p是一维数组指针,所以p每+1就是+1行。错误。
B
*(p+3)是指第4行的首地址,访问不到元素。需要再*
C
*(p+1)
+
3
对地址+3
没啦意义
D
*(*p+2)
*p是第0行首地址
+2
呢就是第二个元素的地址,*取数据咯。
温馨提示:答案为网友推荐,仅供参考
相似回答