在C ++中相互引用布尔指针的正确方法

时间:2016-10-07 15:38:00

标签: c++ pointers

我一直在寻找解决这个小布尔指针引用问题的方法,但无法找到解决方案。我知道当使用指针和引用时,C ++会变得复杂。

下面的代码片段使用类似于bool*的引用的流程,我想将temp5值(true)分配给bool *一直到temp并打印它。然而,这最终导致分段错误。想知道在这样的情况下出了什么问题或者我错过了关于指针和引用的内容。谢谢!

#include <iostream>

int main()
{
  bool* temp= nullptr;
  bool* temp2;
  bool* temp3;

  temp2 = temp;
  temp3=temp2;

  bool temp5 = true;
  *temp3 = temp5;

  std::cout << *temp <<std::endl;

  return 0;
} 

2 个答案:

答案 0 :(得分:4)

您的temp3未初始化。取消引用它可能会导致访问冲突。并且tempnullptr,取消引用它(特别是 - 通过指针分配)也是禁止的。换句话说,你有很多指针,但它们都没有任何意义。

此外,还不清楚这段代码究竟应该做什么。 你想要这样的东西吗?

int main()
{
  bool value = false;

  bool* temp= &value;
  bool* temp2;
  bool* temp3;

  temp2 = temp;
  temp3=temp2;

  bool temp5 = true;
  *temp3 = temp5;

  std::cout << *temp <<std::endl;

  return 0;
}

答案 1 :(得分:1)

您正在为nullptr分配值。这就是造成分段错误的原因

只需替换

bool* temp = nullptr;

用这个

bool* temp= new bool;

它现在可以使用了。

不要伪造用delete运算符删除它。