C++ 在C++;
我一直在寻找解决这个布尔指针引用问题的方法,但无法找到解决方案。我知道C++在使用指针和引用时变得复杂。 下面的代码片段使用类似流的引用C++ 在C++;,c++,pointers,C++,Pointers,我一直在寻找解决这个布尔指针引用问题的方法,但无法找到解决方案。我知道C++在使用指针和引用时变得复杂。 下面的代码片段使用类似流的引用bool*,我想将temp5值(即true)分配给bool*,一直到temp并打印它。然而,这最终导致了分段错误。想知道在这种情况下,指针和引用出现了什么问题,或者我遗漏了什么。谢谢大家! #include <iostream> int main() { bool* temp= nullptr; bool* temp2; bool* t
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;
}
#包括
int main()
{
bool*temp=nullptr;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;
std::cout您的temp3
未初始化。取消引用它可能会导致访问冲突。而temp
是nullptr
,也禁止取消引用它(特别是通过指针分配)。换句话说,您有大量指针,但它们都指向任何地方
此外,这段代码实际上应该做什么还不清楚。
你想要这样的东西吗
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;
}
intmain()
{
布尔值=假;
布尔*温度=&值;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;
std::cout您的temp3
未初始化。取消引用它可能会导致访问冲突。而temp
是nullptr
,也禁止取消引用它(特别是通过指针分配)。换句话说,您有大量指针,但它们都指向任何地方
此外,这段代码实际上应该做什么还不清楚。
你想要这样的东西吗
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;
}
intmain()
{
布尔值=假;
布尔*温度=&值;
bool*temp2;
bool*temp3;
temp2=temp;
temp3=temp2;
bool temp5=真;
*temp3=temp5;
std::cout您正在将值赋给nullptr
。这就是导致分段错误的原因
只需更换线路
bool* temp = nullptr;
用这个
bool* temp= new bool;
现在可以了
不要忘记使用delete
操作符删除它。您正在为nullptr
赋值。这就是导致分段错误的原因
只需更换线路
bool* temp = nullptr;
用这个
bool* temp= new bool;
现在可以了
不要忘记用delete
操作符删除它。或者仅仅temp3=&temp5
?@Ben temp3=&temp5也导致了seg故障。这种行为可以解释吗?@isurarirmal:temp3=&temp5
是一种非常有效的操作,它将temp5
变量的地址存储在temp3
指针中特定线路导致seg故障?我肯定不是这一条。temp3=&temp5
导致一台机器出现seg故障(*temp3=temp5
在那台机器上运行良好),但在另一台机器上运行良好。(那台机器取消引用不起作用)造成这种情况的原因是什么?编译器版本?或者仅仅是temp3=&temp5
?@Ben temp3=&temp5也导致了seg故障。可以解释这种行为吗?@IsuraNirmal:temp3=&temp5
是在temp3
指针中存储temp5
变量地址的一种非常有效的操作。具体哪一行导致seg故障的原因?我肯定不是这台。temp3=&temp5
导致一台机器出现seg故障(*temp3=temp5
在那台机器上运行良好),但在另一台机器上运行良好。(那台机器取消引用不起作用)造成这种情况的原因是什么?编译器版本?@Violet Giraffe谢谢,更正了我的回答谢谢。这很有效。对于这个新bool
,有点新。谢谢你提到内存泄漏。我认为删除它应该可以解决它。@Isurairmal一旦你有信心这样做,请阅读unique\ptr
。它可能看起来在这个阶段有点高级,但这是避免内存泄漏的推荐方法。@Violet Giraffe谢谢,更正了我的回答谢谢。这很有效。对这个new bool
有点陌生。谢谢你提到内存泄漏。我认为删除它应该可以解决它。@IsuraNirmal一旦你有信心这样做,请阅读UNIQUYGPTR 。在这个阶段,它可能看起来稍微先进,但是它是避免内存泄漏的推荐方法。我这里没有引用。@ LeNNESSRACESEN轨道:我想那是一个英文单词,而不是C++单词:P. S.是来自星际迷航事业的VulCAN女孩,在你的化身?…@ VioletGiraffe:是我!(是的)我看不到这里的引用。@ LexnasraceSeNe轨道:我想那是一个英语单词,而不是C++单词:P. S.是来自星际迷航事业的VulCAN女孩,你的化身?…@ VioletGiraffe:是我!