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

标签 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 为 null 并通过键入 *pp_node = my_node; 我正在尝试取消引用 null 但问题是我如何才能将my_node赋值给指针,pp_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是一 block 内存,其值(它保存的数据)是节点的地址。所以它指向node
  • pp_node是一 block 内存,其值为p_my_node的地址,所以指向p_my_node

如我们所料,上面代码的输出是 34

关于c++ - 无法将新对象分配给 cpp 中的指针指针类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48032272/

相关文章:

c - 指针游戏数组不知道如何将指针向后移动

go - Go 如何将方法绑定(bind)到对象?

c++ - 从 C++ 如何执行 C 中的方法或访问结构?

c++ - C++ 对象成员数组的默认初始化?

c++ - Win32 DLL导出函数参数最佳实践

c++ - 找出名称修饰

c++ - Parenting Box2D body

c++ - PostMessage 不适用于 WM_PASTE,mfc

c - 打印函数返回的字符串。我这里有两种情况,一种返回指向字符串的指针,另一种返回字符数组

c - C中struct类型的一维变量会变成二维变量吗