问题
单项选择题
设有以下语句,对a数组元素的引用中(其中0≤i<10),不正确的是( )。
int a[10]=0,1,2,3,4,5,6,7,8,9,*p=a;
A) a[p-a]
B) *(&a[i])
C) p[i]
D) *(*(a+i)
答案
参考答案:D
解析: A选项中,p为指针,数组名a代表数组的首地址,所以p飞就是指针到数组首地址的偏移量;B选项中,&a[i]是取数组a中第i个元素的地址,而对于*(&a[i]),由指针运算符,的运算规则可知,语句 *(&a[i]就是返回地址&a[i]空间中存放的值,也即a[i];C选项,由于指针p已指向数组a,所以p[i]就等于a[i],这是常甩的一种数组元素引用方式;D选项是以指针方式对数组元素进行引用的,由于a只是代表数组的首地址,并不是指针,所以表达式 *(*(a+i))是错误的,正确的引用应该为 *(*(p+i))。