C++ - 将指针传递给函数

use*_*279 -3 c++ pointers

我继续收到我的bool奇怪的意外值testValue.我一直在接收随机数,因为我相信它正试图访问另一个内存区域.我预测我的代码是在我的testNumber()函数中设置的,但我不确定如何解决它.这是我的逻辑.

我已经设定ok为真.现在我分配的内存地址okpOk.

void TextBox::lengthTest(bool *pOk, int length) {
  bool ok;

  if (length < MAX_LENGTH) {
    ok = true;
    pOk = &ok;
  } else {
    ok = false;
    pOk = &ok;
  }
}

bool lengthTestBool = lengthTest(*pOk, length);
cout << lengthTestBool <<;
Run Code Online (Sandbox Code Playgroud)

输出:

85
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 6

您对如何使用指针实现引用语义有一个基本的误解.你想改变的东西指向由指针:

*pOK = ok;
Run Code Online (Sandbox Code Playgroud)

但是,C++实际上通过引用类型本身支持引用语义,这可能是更好的:

void testNumber(bool & OK, int n)
{
    OK = true;
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

然而,更好的是简单地返回一个布尔:

bool testNumber(int n) { /* ... */ }

if (testNumber(x)) //... etc.
Run Code Online (Sandbox Code Playgroud)

  • @cupcake_lover将来,请发出实际代码,并在提出问题时添加作业标签.如果您想在发布之前修改代码,那么为了大声喊叫,请确保它按照您的描述进行编译和操作.要在编程领域取得进步,您需要精确. (3认同)