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 呢就是第二个元素的地址,*取数据咯。