若有以下定义,则对a数组元素的正确引用是( )。 int a[5],*p=a; A. *&a[5] B. a+2 C. *(p+5) D. *(a+2)

请帮我解释解释好么?不是一个答案

D正确,选D。因为:
A:语法合法,但[5]越界了。
B:a+2是地址,不是元素。
C:与A一样,只是指针写法,p+5越界了。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-11
只有D一个对的 AC超出数组范围 B是地址本回答被提问者采纳

...int a[5],*p=a; A. *&a[5] B. a+2 C. *(p+5) D. *(a+2)_百 ...
D正确,选D。因为:A:语法合法,但[5]越界了。B:a+2是地址,不是元素。C:与A一样,只是指针写法,p+5越界了。

int a[5],*p=a;
答案是 D。A项,由于 a[5] 已经超出数组外了,所以 *&a[5] 不是 数组元素。B项,a+2 是a[2]的地址,不是数组元素。C项,*(p+5)相当于a[5],已经超出数组范围,不是数组元素。D项,正确,*(a+2)相当于 a[2]。

...语句int a[5], *p=a;,则对a数组元素的正确引用是什么 A *&a[5...
正确答案是:D &a[5]就是a[5],下标越界了 a就是a[0],a[0]+2不是对数组元素的正确引用 同理,*(p+5)就是a[5],下标越界了 而* (a+2)就是a[2]

c语言选择题 我做了就是想对答案
(一)选择题1.若有以下定义,则对a数组元素的正确引用是___D___. int a[5],*p=a; a)*&a[5] b)a+2 c)*(p+5) d)*(a+2)2.若有定义:int a[2][3],则对a数组的第i行j列元素地址的正确引用为___A___. a)*(a[i]+j) b)(a+i) c)*(a+j) d)a...

C语言若定义int a[5],*p=a;则对a数组元素正确引用为哪个?为什么?
A:下标越界,数组大小为5时,下标范围为0-4 B:a+2是数组第3个元素的地址 C:越界,类似A D:正确

若以下定义,则对a数组元素地址的正确引用是(D)。为什么是D?_百度知...
A:因为a的长度是5,p指向a,p+5已经超出了a的最后一个元素,所以不对,如果是01234其中一个那么是对的。B:*a先计算,得到a里第一个元素的值,再加1,当然不是地址了,而是地址的值了 C:a本身是一个数组,数组再用&取地址就会得到数组的地址,数组的地址虽然和数组元素的首地址相同,但是...

求答案,求答案。 若有以下定义和语句,则对a数组元素的正确引用为?
首先有定义:int a[2][3]:这定义了一个二维数组a,它有 2 行 3 列,总共可以存放 2×3 = 6 个int类型的元素。可以把它看作是由两个一维数组组成的数组,每个一维数组有 3 个元素。(*p)[3]:定义了一个指针p,p是指向一个包含 3 个int类型元素的数组的指针。然后p = a,这使得p指向...

...int a[4][5],(*p)[5]; p=a; 下列对数组a 数组元素正确的引用形式是...
对于选项A,首先p是数组指针,其类型为int (*)[5],p=a使得p(即p+0)成为指向二维数组a第0行首地址的指针,那么p+1表示的是指向二维数组a第1行首地址的指针。对于选项B,首先p+3表示指向"二维数组a第3行首地址"的指针,那么*(p+3)也就是得到指针所指之处的值 即"二维数组a第3行首地址...

...int a [4][5],(*p)[5]=a;则对数组元素正确的引用时:A.p+1 B.*...
(p+i)等价于p[i],反过来也成立。只要把答案试下就知道了。p=a A . p+1=&*(p+1)=&p[1]=&a[1],(取地址和显示内容是两个相反的操作,可以互相抵消的)B. *(p+3)=p[3]=a[3]C. *(p+1)+3=p[1]+3=&*(p[1]+3)=&p[1][3]=&a[1][3]D. *(*p+2)=*(*(p+0...

...int a[4][5], (*p)[5]; p = a; 则对a数组元素
然后呢,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 呢就是第二个元素的地址,*取数据咯。

相似回答