C++ 如何初始化返回类型为布尔型的函数的值?

C++ 如何初始化返回类型为布尔型的函数的值?,c++,algorithm,tree,binary-search-tree,C++,Algorithm,Tree,Binary Search Tree,我想为checkForBST(node*rootptr)函数初始化true。我该怎么办?我知道变量初始化,但我总是对函数初始化感到困惑。下面是我的checkForBST(node*rootptr)函数: bool checkForBST(node* rootptr){ queue <node*> Q; int parent; int child1; int child2; node* parentadr;

我想为
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());
    }
bool checkForBST(节点*rootptr){
队列Q;
int父代;
int child1;
int child2;
节点*parentadr;
Q.push(rootptr);
做{
父项=Q.front()->数据;
parentadr=Q.front();
如果(Q.front()->left!=NULL){child1=Q.front()->left->data;}否则{child1=-1;}
如果(Q.front()->right!=NULL){child2=Q.front()->right->data;}否则{child2=-1;}
Q.pop();
如果(child1>child2){返回false;}
如果(parentadr->left!=NULL){Q.push(parentadr->left);}
如果(parentadr->right!=NULL){Q.push(parentadr->right);}
}而(!Q.empty());
}

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

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

    ....

    return returnVal;

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

bool checkForBST(node* rootptr) { 
    ...
} 

void (*my_variable)(node*) = &checkForBST; 

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

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

    ....

    return returnVal;

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

bool checkForBST(node* rootptr) { 
    ...
} 

void (*my_variable)(node*) = &checkForBST; 

添加“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 checkForBST(节点*rootptr){
队列Q;
int父代;
int child1;
int child2;
节点*parentadr;
Q.push(rootptr);
做{
父项=Q.front()->数据;
parentadr=Q.front();
如果(Q.front()->left!=NULL){child1=Q.front()->left->data;}否则{child1=-1;}
如果(Q.front()->right!=NULL){child2=Q.front()->right->data;}否则{child2=-1;}
Q.pop();
如果(child1>child2){返回false;}
如果(parentadr->left!=NULL){Q.push(parentadr->left);}
如果(parentadr->right!=NULL){Q.push(parentadr->right);}
}而(!Q.empty());
返回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 checkForBST(节点*rootptr){
队列Q;
int父代;
int child1;
int child2;
节点*parentadr;
Q.push(rootptr);
做{
父项=Q.front()->数据;
parentadr=Q.front();
如果(Q.front()->left!=NULL){child1=Q.front()->left->data;}否则{child1=-1;}
如果(Q.front()->right!=NULL){child2=Q.front()->right->data;}否则{child2=-1;}
Q.pop();
如果(child1>child2){返回false;}
如果(parentadr->left!=NULL){Q.push(parentadr->left);}
如果(parentadr->right!=NULL){Q.push(parentadr->right);}
}而(!Q.empty());
返回true;
}

感谢您的快速响应:)它成功了。实际上,我的代码格式是:boolcheckforbst(node*rootptr){if(…){returnfalse}}。但条件是,我不能添加return true,否则它将返回,但我必须仅在条件为true时返回。所以,我必须将默认值设置为true,并且我正在尝试初始化函数本身。感谢您的快速响应:)它成功了。实际上,我的代码格式是:boolcheckforbst(node*rootptr){if(…){returnfalse}}。但条件是,我不能添加return true,否则它将返回,但我必须仅在条件为true时返回。所以,我必须将默认值设置为true,并且我正在尝试初始化函数本身。谢谢:)它成功了。但是,我们可以初始化返回类型为bool、int、double的函数吗?同样的方法。只需使用函数/方法返回类型的值,如“return 0;”,返回“0.0”-当然它不需要是0,可以是函数/方法返回的任何类型的值。事实上,它不是初始化,如果函数流到达函数代码的末尾,它应该被视为返回的值。谢谢:)它工作了。但是,我们可以初始化返回类型为bool、int、double的函数吗?同样的方法。只需使用函数/方法返回类型的值,如“return 0;”,返回“0.0”-当然它不需要是0,可以是函数/方法返回的任何类型的值。而且,实际上它不是初始化,如果函数流到达函数代码的末尾,它应该被视为返回的值。