设有以下语句,则()不是对a数组元素的正确引用,其中0<=i<10

inta[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))要详细分析,为什么选那个... 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))

要详细分析,为什么选那个
展开
 我来答
百度网友80b6bea
推荐于2017-12-16 · TA获得超过226个赞
知道答主
回答量:7
采纳率:0%
帮助的人:3.2万
展开全部
四个选项中,D不是对a数组元素的正确引用。

int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
相当于
int a[10]={0,1,2,3,4,5,6,7,8,9};
int *p;//定义p为执行int的指针变量
p = a; //a为数组名,代表数组的起始地址

A、p的值是一个地址(数组a的起始地址),所以p-a = 0,那么a[p-a]相当于a[0]

B、a[i]是数组的一个元素,&a[i]是数组的元素的地址,*(&a[i])相当于a[i]

C、p[i] <=> *(p+i), p+i的结果是一个地址,*(p+i)就是对数组中下标为i的元素的访问

D、a+i的值是一个地址,*(a+i)<=>a[i],也就是说表达式*(a+i)的值是一个整数,在表达式*(*(a+i))中,最左边的*,相当于是对一个整数进行解引用,所以是非法的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式