无法将新对象分配给 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
。
在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
。