将新对象分配给cpp中的指针指针类型会破坏程序。 代码如下所示:
#include <iostream>
using namespace std;
struct Node{
int key;
Node * nex;
};
int main(){
Node * my_node = new Node;
Node ** pp_node;
*pp_node = my_node;
return 0;
}
我认为这里的问题如下:pp_node
为空,输入*pp_node = my_node;
我试图取消引用null但问题是如何将my_node
指定给指针, pp_node
指的是?
答案 0 :(得分:4)
pp_node
应包含my_node
的地址,以便pp_node
指向my_node
(它本身就是指针并持有地址)。
#include <iostream>
struct Node{
int key_;
Node * nex;
};
int main(){
Node node={34, nullptr};
Node* p_my_node = &node;
Node** pp_node;
pp_node = &p_my_node;
std::cout<<(**pp_node).key_;
return 0;
}
现在
p_my_node
是一块内存,其值(它所持有的数据)是node
的地址。所以它指向node
pp_node
是一段记忆,其值为p_my_node
的地址,因此它指向p_my_node
上面代码的输出是34
,正如我们预期的那样。
答案 1 :(得分:0)
pp_node
未初始化。您需要先将其初始化。
Node** pp_node = new Node*;
*pp_node = my_node;