c语言入门 数组元素的引用 感谢帮助。

若有以下说明和语句,且0<=i<10,则下面哪个是对数组元素的错误引用()
int a[]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
C.p+i D.*(&a[i])
答案是C。
我的问题是p表示a[0],p+i就表示a[i]了呗,怎么不对?D项,有这种格式?我的书上没说。

p表示a[0],p+i就表示a[i]了呗
这句话不对
数组名代表的是这个数组的初地址,是个地址值,不代表元素的

p+i就表示a[i]的地址,要想表示这个元素,得是*(p+i)

至于*(&a[i])当然是正确的
&a[i]代表a[i]的地址
*(&a[i])不就是指向a[i]的元素么

不会的可以HI我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-19
p+i只是a[i]的地址,并不是a[i]的元素值。

*(&a[i])是先取a[i]的地址,然后再对这个地址解引用,所以*(&a[i])相当于a[i]
第2个回答  2010-07-19
p表示的是&a[0],p+i表示的是&a[i]

D有
&a[i]是a[i]的地址
*是对地址对应内容的引用本回答被提问者采纳
第3个回答  2010-07-19
1.数组元素 是值
2.p+i是表示地址
3. 对于*(&a[i])
其中 &a[i]表示a[i]的地址,加个*就表示值了
相似回答