a。cp+1 b.*(cp+3) c.*(cp+1)+3 d.*(*cp+2)
解释一下正确原因和错误原因。
若有定义int c[4][5],(*cp)[5];和语句cp=c,则能正确引用c数组元素的是
答案:2 悬赏:80 手机版
解决时间 2021-03-03 10:06
- 提问者网友:嘚啵嘚啵
- 2021-03-02 11:34
最佳答案
- 五星知识达人网友:荒野風
- 2021-03-02 13:13
*(*cp+2)代表c[0][2]这个元素。
cp是行指针,用于指向二维数组的一行。
cp=c,故cp+1是第1行的指针。
*(cp+3)等价于c[3],代表第3行。
*(cp+1)+3 等价于c[1]+3。
*(*cp+2)等价于*(*(cp+0)+2),等价于c[0][2],代表c数组的一个元素。
cp是行指针,用于指向二维数组的一行。
cp=c,故cp+1是第1行的指针。
*(cp+3)等价于c[3],代表第3行。
*(cp+1)+3 等价于c[1]+3。
*(*cp+2)等价于*(*(cp+0)+2),等价于c[0][2],代表c数组的一个元素。
全部回答
- 1楼网友:拾荒鲤
- 2021-03-02 14:39
答案是d,解释如下:
(*cp)[5]该指针的类型是int (*)[5](是指向int [][5]这样的二维数组的指针),cp=c;则cp指向的是c数组的第一个元素,即c[0],cp要引用c的数组元素,则通过*cp。但是同时c[0]它是一个数组长度为5的整型数组,c[0]是数组名,它本身就是一个地址了,而数组名亦及数组的首元素地址,那么*cp就指向了数组c[0]的首元素c[0][0],那么*cp+2指向谁了呢?
*cp+2等价于c[0]+2,即指向了c[0][2]这个元素,*(*cp+3)就是引用c[0][2]这个元素了。
我们也可以这样来看,即c[i]是行指针,c[i]+j是第i行第j列的元素的地址,*(c[i]+j)就是引用该元素了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯