C++函数不更新变量

C++ function does not update variable


我目前正在编写一个函数,它必须更新布尔值。
但出于某种原因,它不会这样做。让我给你看一个简化的版本:

main.cpp

#include <iostream>
#include "header.h" 


int main(){

bool limit = true;

test(limit);

if (limit == false){cout << "hi";}

}

header.h

void test(bool x);

header.cpp

#include <iostream>
#include "header.h"

void test(bool x){

x = false;
}

我在主函数中定义了 bool“limit”。然后我将它传递给位于 header.cpp 中的函数“test”。在此函数中,bool 限制设置为 false。 然而,返回 main.cpp 布尔值仍然为真。我看到了,因为没有调用 if 条件。 我怀疑该错误与文件之间传递的信息有关。 您知道真正的原因和可能的替代方案吗?

test中,x是传递给它的值的副本。请改用参考:

void test(bool &x)
{
    x=false;
}

当您将函数 test 声明为

void test(bool x);

参数bool x按值传递。也就是说,计算机会复制您传递给 test 的变量。因此,当测试更新这样一个变量时,您只是在修改一个临时变量,而不会影响您从 main 传递给它的 bool 限制。

如果您打算更新 x,您应该传递 reference 并将 test 声明为

void test(bool& x);