Невозможно назначить новый объект типу указателя в 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 является нулевым и введя *pp_node = my_node; Я пытаюсь разыменовать ноль, но вопрос в том, как я могу назначить my_node на указатель, pp_node указывает на?

0

Решение

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, как мы и ожидали.

4

Другие решения

pp_node неинициализирован. Вы должны инициализировать это сначала.

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

По вопросам рекламы [email protected]