我编写了一个程序来对数组中的元素求和。但是,当我编译程序时,它告诉我“控制可能会达到非空函数的结束”。我不知道为什么。
//a program to sum the elements of an array
#include <stdio.h>
int sum(int array[],int n)
{
int sum =0, *ptr;
int *arrayend=array +n;
for(ptr=array; ptr<arrayend;++array)
{
sum +=*ptr;
return sum;
}
}
int main(void)
{
int sum(int array[],int n);
int value[10]={1,2,3,4,5,6,7,8,9,10};
printf("The sum is %i\n",sum(value,10));
return 0;
}
答案 0 :(得分:0)
您的函数sum()
格式不正确,并且让我们说第一次尝试时for循环条件失败并且您永远不会进入循环然后您遇到的情况是您没有返回任何内容并且您的函数返回类型是int
因此需要解决这种情况,以便即使您无法进入循环,也应该在循环之后返回。
在循环内返回是没有意义的,除非你有一个基于你返回的条件。
答案 1 :(得分:0)
每次执行循环体时都尝试return sum
,但函数只返回一次。所以在循环的第一次迭代中,函数将返回。这与没有循环一样。
你需要在循环后放置return sum
,这样你的循环才有意义。即首先将*ptr
添加到sum
n 次,然后返回结果sum
。
此外,在循环中,您执行++array
。这应该是++ptr
。