17.有以下程序 :(考察学员对数组、指针概念的理解。难度:中等)

来源:百度知道 编辑:UC知道 时间:2024/05/23 15:15:39
main()
{ int a[]={2,4,6,8,10}, y=0, x, *p;
p=&a[1];
for(x= 1; x<3; x++) y += p[x];
printf("%d\n",y);
}
程序运行后的输出结果是
A)10 B)11 C)14 D)15
答案是c为什么?
回答的人都感谢

p是一个整型指针。p=&a[1];这一句就把a[1]的地址赋给p了。
p可以当成一个整型数组来使用,只是它是a[1]开始的,也就是说p[0]=a[1];依此类推。那么for循环就可以做了,y+=p[1];然后y+=p[2];
其中p[1]=a[2]=6;
p[2]=a[3]=8;数组是从下标0开始的。
所以结果就是C 14.

没有正确答案~~,小哥

A