C “意外错误”;控件可能会到达非无效函数的末尾”;
我写了一个程序来对数组中的元素求和。然而,当我编译程序时,它告诉我“控件可能到达非void函数的末尾”。我不知道为什么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
//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循环之外并运行程序之后,它不会生成任何输出,因为你在crementarray
,而您应该递增ptr
。哦,我明白了。谢谢