【问题标题】:How to initialize value to function whose return type is boolean?如何将值初始化为返回类型为布尔值的函数?
【发布时间】:2020-04-01 11:55:46
【问题描述】:

我想为checkForBST(node* rootptr) 函数初始化true。我该怎么办?我知道变量初始化,但我总是对函数初始化感到困惑。下面是我的checkForBST(node* rootptr) 函数:

bool checkForBST(node* rootptr){
        queue <node*> Q;
        int parent;
        int child1;
        int child2;
        node* parentadr;
        Q.push(rootptr);
        do{
          parent=Q.front()->data;
          parentadr= Q.front();
          if(Q.front()->left !=NULL) {child1= Q.front()->left->data;} else{child1=-1;}
          if(Q.front()->right !=NULL) {child2= Q.front()->right->data;} else{child2=-1;}
          Q.pop();
          if(child1>child2){return false;}
          if(parentadr->left != NULL){Q.push(parentadr->left);}
          if(parentadr->right != NULL){Q.push(parentadr->right);}
        }while(!Q.empty());
    }

【问题讨论】:

    标签: c++ algorithm tree binary-search-tree


    【解决方案1】:

    添加'return true;'最后声明:

    bool checkForBST(node* rootptr){
        queue <node*> Q;
        int parent;
        int child1;
        int child2;
        node* parentadr;
        Q.push(rootptr);
        do{
            parent=Q.front()->data;
            parentadr= Q.front();
            if(Q.front()->left !=NULL) {child1= Q.front()->left->data;} else{child1=-1;}
            if(Q.front()->right !=NULL) {child2= Q.front()->right->data;} else{child2=-1;}
            Q.pop();
            if(child1>child2){return false;}
            if(parentadr->left != NULL){Q.push(parentadr->left);}
            if(parentadr->right != NULL){Q.push(parentadr->right);}
        }while(!Q.empty());
        return true;
    }
    

    【讨论】:

    • 谢谢:) 它奏效了。但是我们真的可以初始化返回类型为 bool、int、double 的函数吗?
    • 同理。只需使用函数/方法返回的类型值,例如'return 0;',返回'0.0' - 当然它不需要为0,可以是函数/方法返回的任何类型值。而且,事实上它不是初始化,它应该被视为返回值,以防函数流到达函数代码的末尾。
    【解决方案2】:

    我不确定我是否完全理解您的问题,但是如果您想初始化函数的返回类型以返回“true”,那么您只需创建一个局部函数变量,将其初始化为 true,然后返回最后那个变量。

    bool checkForBST(node* rootptr) {
        bool returnVal = true;
    
        ....
    
        return returnVal;
    
    }
    

    您的问题的标题听起来更像是您试图将变量分配给函数(函数指针变量)。为此,您需要执行以下操作:

    bool checkForBST(node* rootptr) { 
        ...
    } 
    
    void (*my_variable)(node*) = &checkForBST; 
    

    【讨论】:

    • 感谢您的快速回复:) 它奏效了。实际上我的代码格式是:bool checkForBST(node* rootptr) { ....................... if( ...) {return false} }。但条件是我不能添加 return true 否则它会返回,但只有当条件为真时我才必须返回。因此,我必须将默认值设置为 true,并且我试图初始化函数本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多