首页 > 解决方案 > 错误:控制可能到达非空函数的末尾,Xcode

问题描述

我知道有很多关于我的问题的问题和答案,

但那些没有帮助,因为有不同的情况。

这是我的代码。

BinNode *Search(BinNode *p, const Member *x)
{
    int cond;
    if(p == NULL)
        return NULL;
    else if((cond = MemberNoCmp(x, &p->data)) == 0)
        return p;
    else if(cond < 0)
        Search(p->left, x);
    else
        Search(p->right, x);
}

和错误信息。

控制可能到达非空函数的结尾

我认为我的功能会很好地执行,我认为这是一条重要的线。

if(p == NULL)
        return NULL;
    else if((cond = MemberNoCmp(x, &p->data)) == 0)
        return p;

我认为这最终将无条件返回 NULL 或 p 。

我错过了什么问题?

标签: c

解决方案


在“非void”函数中,您必须在可能采用的每个分支上返回一些内容。换句话说:

BinNode *Search(BinNode *p, const Member *x)
{
    int cond;
    if(p == NULL)
        return NULL;
    else if((cond = MemberNoCmp(x, &p->data)) == 0)
        return p;
    else if(cond < 0)
        return Search(p->left, x);
    else
        return Search(p->right, x);
}

推荐阅读