无法将新对象分配给cpp中的指针指针类型

时间:2017-12-30 08:34:47

标签: c++ pointers struct nul

将新对象分配给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指的是?

2 个答案:

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