说明语句如下:int a[10]={1,2,3,4,5,6,7,8,9},*p=a;则数值为6的表达式是( )。

祥解,谢谢!
A.*p+6 B.*(p+6) C.p+5 D.*p+=5

D。

表达式“*p = a”说明p指向a[0]的位置;
那么 *p + 6 = a[0] + 6 = 7; A错;

p指向a[0]的位置, 则p + 6 指向a[6]的位置,
那么 *(p + 6) = a[6] = 7; B错;

p是一个指针,p的值本身是一个地址,p + 5显然不可能为5; c错;

上面说了, p指向a[0]的位置,那么 *p = a[0] = 1;
*p += 5; 等同于 a[0] += 5; 等同于 a[0] = a[0] + 5 = 1 + 5 = 6;
显然只有D正确;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-04
D
一开始定义了 *p=a,就是指等于a[0];它指向的是一个值!
*p+=5,可以变换一下 *p=(*p)+5 不就 a[0]+5=6.....

A = 7 ;
B 的值是 a[6]=7
c 是一个地址 &a[5] 不是值!
第2个回答  2010-06-04
D

A> *p+6=>1+6=7
B>*(p+6)=7
c>p+5 是地址
D>*p+5=>1+5=>6
所以选D
相似回答