意外的"control may reach end of a non void function"错误



我编写了一个程序来求和数组中的元素。然而,当我编译程序时,它告诉我"控制可能到达非void函数的末尾"。我不知道为什么。

//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 %in",sum(value,10));
return 0;
}

您的函数sum()格式不正确,假设for循环条件在第一次尝试时失败,并且您从未进入循环,则会出现不返回任何内容的情况,并且您的函数返回类型为int

因此,这种情况需要解决,这样即使您未能进入循环,也应该在循环后返回。

循环中的返回没有任何意义,除非存在返回所基于的条件。

每次执行循环体时都尝试return sum,但函数只返回一次。因此,在循环的第一次迭代中,函数将返回。这和没有循环是一样的。

您需要将return sum放在循环之后,这样您的循环才有意义。即首先*ptr添加到sumn次然后返回生成的sum

此外,在循环中执行++array。可能应该是++ptr

相关内容

最新更新