还在这里学习C ++。试图了解指针分配的一些内容。我的问题在于下面代码的评论。
#include <string>
#include <iostream>
int main(){
std::string test = "foop";
std::string * pointer;
*pointer = test; //Why does this crash my program...
pointer = &test; //But this doesn't?
return 0;
}
根据我所读到的内容,我认为* p = o和p =&amp; o做了同样的事情。我很欣赏启蒙。
谢谢!
答案 0 :(得分:4)
*p = o;
将o
分配给p
指向的事物。在你的代码中p
(或pointer
)是未初始化的,所以它分配给上帝知道什么,导致崩溃(如果你很幸运),或者默默地破坏记忆(如果你不是&#39;吨)。
p = &o;
将o
的地址指定给p
,使p
指向o
。这是明确定义的。
答案 1 :(得分:1)
指针需要先分配地址,以便取消引用。 现在string *指针指向垃圾地址!所以当你分配字符串foo时,程序会说,我不希望“foo”住在转储中!然后就崩溃了。