Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C “意外错误”;控件可能会到达非无效函数的末尾”;_C - Fatal编程技术网

C “意外错误”;控件可能会到达非无效函数的末尾”;

C “意外错误”;控件可能会到达非无效函数的末尾”;,c,C,我写了一个程序来对数组中的元素求和。然而,当我编译程序时,它告诉我“控件可能到达非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) { su

我写了一个程序来对数组中的元素求和。然而,当我编译程序时,它告诉我“控件可能到达非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 %i\n",sum(value,10));
return 0;
}
//对数组元素求和的程序
#包括
整数和(整数数组[],整数n)
{
整数和=0,*ptr;
int*arrayend=array+n;
for(ptr=array;ptr您的函数
sum()
格式不好,假设for循环条件在第一次尝试时失败,并且您从未进入循环,那么您将遇到不返回任何内容且函数返回类型为
int

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


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

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

您需要将
返回总和
放在循环之后,这样循环才有意义。即首先
*ptr
添加到
总和
n次,然后返回得到的
总和


另外,在循环中你做了
++array
。那应该是
++ptr

返回和;
放在
for
循环之外。谢谢,这是有意义的。但是,在我将
返回和
放在for循环之外并运行程序之后,它不会生成任何输出,因为你在crement
array
,而您应该递增
ptr
。哦,我明白了。谢谢