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

Can't assign a new object to pointer pointer type in cpp

在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 为 null,通过键入 *pp_node = my_node; 我试图取消引用 null 但问题是如何将 my_node 分配给指针,pp_node 指向?

pp_node 未初始化。您需要先对其进行初始化。

Node** pp_node = new Node*; 
*pp_node = my_node;

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