我想要做的是下面的一个例子。
让我们先定义一个bool。
bool cat = {false};
让我们在这里做一个假bool。
bool setcat(bool booltoset)
{
booltoset = true;
return booltoset;
}
现在可以用cat调用它。
printf("cat is %s", cat?"true":"false"); //set cat as false.
我的问题是;是否可以通过参数实际传递bool而不是设置bool?
答案 0 :(得分:4)
您需要通过引用传递,即:
void setcat(bool& booltoset)
{
booltoset = true;
}
答案 1 :(得分:0)
任何函数参数都只是一个变量,其范围与函数体相同。如果它是普通的自动变量,那么更改它对调用者没有影响。这有时很有用:您实际上可以使用参数,例如:
template<typename F>
void for_each(noexcept_it i, const noexcept_it end, const F &f) noexcept(noexcept(f))
{
for(; i!=end; ++i) f(i); // use i as iteration variable.
}
尽管编译器在大多数情况下仍会优化这些事情。