一个函数可以在C中返回其他函数吗?

SHA*_*HAR 1 c return function

一个函数可以返回其他函数,但是如何?我在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;语句将在最后插入).