答案为什么是4

来源:百度知道 编辑:UC知道 时间:2024/06/19 05:35:12
#include <stdio.h>
void sum(int *a)
{a[0]=a[1];}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--) sum(&aa[i]);
printf(""%d\n,aa[0]);
}
执行后的输出结果是_____

for(i=2;i>=0;i--)
sum(&aa[i]); //相当于 sum(aa + i);

void sum(int *a)
{a[0]=a[1];} //以相对原数组的下标为i的元素为起点.也就是说,这个函数里面a[0] == a[i].
三次循环的过程是:
a[2] = a[3];
a[1] = a[2];
a[0] = a[1];
所以结果是4.

循环3次
第一次循环后结果
aa[10]={1,2,4,4,5,6,7,8,9,10}
第二次
aa[10]={1,4,4,4,5,6,7,8,9,10}
第三次
aa[10]={4,4,4,4,5,6,7,8,9,10}

输出 aa[0]
即系4

个人觉得,程序里面的过程应该是
aa[2]=aa[3]
aa[1]=aa[2]
aa[0]==aa[1]

所以就相当于把4传给了aa[0],