求解答C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 03:12:54
我是入门新手,下列语句的输出结果是19,谁能告诉我为什么?具体的过程,谢谢了
main()
{int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf("%d\n",y);
}

p=&a[1]; //p指向数组a的第二个元素4
下面那个for循环了3遍,每次y都加上p指向的元素值(y+=*(p+x);),p每次循环都指向下一个元素。

所以y=1;后来+4 +6 +8=19

main()
{int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1]; //现在p是a[1]的地址
for(x=0;x<3;x++)
y+=*(p+x); //y每次加上p后面的一个元素的值
printf("%d\n",y);
}

1+4+6+8=19

main()
{int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1]; //*p=4
for(x=0;x<3;x++)
y+=*(p+x); // y+=*(p+x)>>>y=y+*(p+x)
1.x=0,*(p+x)=4,y=4+1=5 2.x=1,*(p+x)=6,y=5+6=11 3.x=2,,*(p+x)=8,y=11+8=19
printf("%d\n",y); // y=19
}