【发布时间】:2020-03-13 16:12:57
【问题描述】:
#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);
}
sumofelements 中的错误,如果 for 循环以 1 开头,则会产生垃圾值。
【问题讨论】:
-
因为当你使用
for (i = 1; i <= size; i++)时,你正在读取数组的边界,调用未定义的行为。可用的元素从a[0]到a[size-1]。不要读取数组的边界。在 C 中,惯用循环使用for (int i = 0; i < size; i++)。 -
为什么要从 1 开始?您可以省略一个元素,因为第一个元素的索引计数从 0 开始。
-
for声明没有任何问题。总和应该是+= a[i-1];
标签: c function for-loop pointers