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

时间:2012-03-17 00:33:48

标签: c++ pointers

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

我已将ok设为true。现在,我将ok的内存地址分配给pOk

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 <<;

输出:

85

1 个答案:

答案 0 :(得分:6)

你对如何使用指针实现引用语义有一个基本的误解。您希望通过指针更改指向的内容:

*pOK = ok;

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

void testNumber(bool & OK, int n)
{
    OK = true;
    // ... 
}

但更好的是,只需返回一个布尔:

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

if (testNumber(x)) //... etc.