为什么如果循环从 1 开始,它返回垃圾值,但是当循环从 0 开始时,它会打印有效的答案?

-1 c pointers for-loop function

#include <stdio.h>
int sumofelements(int a[],int size)
{
   int i,sum=0;
   for (i=1;i<=size;i++)  
   {
      sum+=a[i];
   }
   return sum;
}

int main()
{
   int a[]={1,2,3,4,5};
   int size=sizeof(a)/sizeof(a[0]);
   int soe=sumofelements(a,size);
   printf("sum of the elements=%d\n",soe);
}
Run Code Online (Sandbox Code Playgroud)

如果循环以 1 开头sumofelements,则for循环中的错误会产生垃圾值。

use*_*751 5

这个循环:

for (i=1;i<=size;i++)  
{
   sum+=a[i];
}
Run Code Online (Sandbox Code Playgroud)

使用 a[1]、a[2]、a[3]、a[4] 和 a[5]

这个循环:

for (i=0;i<size;i++)  
{
   sum+=a[i];
}
Run Code Online (Sandbox Code Playgroud)

使用 a[0]、a[1]、a[2]、a[3] 和 a[4]

没有[5]。而你忘记了 [0]。所以第二个循环给你正确的答案,第一个循环没有。