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

[复制链接]
查看11 | 回复5 | 2020-4-9 00:37:59 | 显示全部楼层 |阅读模式
A)p+1
B)*(p+3)
C)*(p+1)+3
D)*(*p+2)
答案是D。但我不知道为什么,请帮我解释详细一点,谢谢!

回复

使用道具 举报

千问 | 2020-4-9 00:37:59 | 显示全部楼层
首先呢,a是二维数组,不解释。然后呢,p是一个指针,什么样的指针呢,就是指向一维数组的指针,而且这个一维数组的元素个数呢是5.然后呢,p=a;就是把p指向a数组。分析选项:ap+1.因为p是一维数组指针,所以p每+1就是+1行。错误。b*(p+3)是指第4行的首地址,访问不到元素。需要再*c*(p+1)+3对地址+3没啦意义d*(*p+2)*p是第0行首地址+2呢就是第二个元素的地址,*取数据咯。
回复

使用道具 举报

千问 | 2020-4-9 00:37:59 | 显示全部楼层
(*p)[5]; -- (*p) 是一个指针,(*p)[5] 用来指向有5个元素的数组。p=a; 就是 p=&a[0];指向a 的第一行的开始(如果是 p=&a[1];指向a 的第2行的开始)语句里 (*p) 是 第一行的开始*(*p+2) 里的 *p+2 是 第一行里的第3个元素的地址,*(*p+2) 是该元素的值int a
回复

使用道具 举报

千问 | 2020-4-9 00:37:59 | 显示全部楼层
p)[5]; -- (*p) 是一个指针,(*p)[5] 用来指向有5个元素的数组。p=a; 就是 p=&a[0];指向a 的第一行的开始(如果是 p=&a[1];指向a 的第2行的开始)语句里 (*p) 是 第一行的开始*(*p+2) 里的 *p+2 是 第一行里的第3个元素的地址,*(*p+2) 是该元素的值int a[4
回复

使用道具 举报

千问 | 2020-4-9 00:37:59 | 显示全部楼层
此题很简单的,你只要明白a是二维数组就好了,所以要访问里面元素必定有两个*号,三维,四维依次类推
回复

使用道具 举报

千问 | 2020-4-9 00:37:59 | 显示全部楼层
p+1
&a[1] &a[1][0] *(p+3)
&a[3] &a[3][0]*(p+1)+3&a[1][3]*(*p+2) a[1][2]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行