一个函数可以返回其他函数,但是如何?我在C中实现二进制搜索
bool search(int value, int values[], int n)
{
// TODO: implement a searching algorithm
if(n<1)
{
return false;
}
else
binary_search(value,values,n);
}
Run Code Online (Sandbox Code Playgroud)
和二进制搜索代码是:
//binary search
bool binary_search(int value,int values[],int n)
{
int start = 0;
int end = n-1;
while(end>=start)
{
int mid = (start+end)/2;
if(values[mid]==value)
{
return true;
}
else if(values[mid]>value)
{
end = mid-1;
}
else
{
start = mid+1;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这并没有编译它说"控制可能达到无效功能的终点".如果我调用的函数返回bool那么为什么我应该在之前放一个return语句
binary_search(value,values,n);
Run Code Online (Sandbox Code Playgroud)
喜欢
return binary_search(value,values,n);
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 11
同
return binary_search(value,values,n);
Run Code Online (Sandbox Code Playgroud)
你没有返回一个函数,你正在调用一个函数,并返回函数返回的内容.
在search函数的上下文中,上述return陈述是正确的.
如果未从声明为返回值的函数返回值,则会导致未定义的行为.
要从函数返回值,您需要显式使用该return语句.没有函数调用或隐式返回的链接(除了作为main函数的特殊情况,如果没有隐式return 0;语句将在最后插入).