c语言 需要解释

来源:百度知道 编辑:UC知道 时间:2024/05/30 02:41:46
main()
{int[10]={1,2,3,4,5,6,7,8,9,10},*q=p+2;
printf("%d\n",*p+*q)
程序运行结果?
上面一行错了
少了*p=&a[3]
{int[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2

你仔细看一下,是不是写错了。应该是这样的对不
int p[10]={1,2,3,4,5,6,7,8,9,10},*q=p+2;
如果是这样的话,结果应该为:
4
即:p为数组首地址也就是p[0]的值1
*q=p+2 表示指向p[0]地址后移2次即3
因此*p为3
*q为1

补充:如果*p=&a[3] 则*p值为a[3]值即4
*q=p+2 即a[3]地址向后移两次即6
则printf("%d\n",*p+*q);
就为4+6也就是10

int a[10]={1,2,3,4,5,6,7,8,9,10}
是不是这样啊?

这样的话结果就是10