Можно ли присвоить переменную-указатель NULL переменной-указателю?

Итак, я работал над Max Heap Tree с представлением ссылок на C++. Поскольку я не могу загрузить код, так как он довольно длинный, но пока я отлаживал, я понял, что выполнение остановится на выражении, в котором он присваивает нулевой указатель указателю. Например

      // if node->left_child->right_chile == NULL
node->right_child = node->left_child->right_child; // the program will exit here.

Такая операция часто встречается в моем коде при методе удаления, поэтому мне также было интересно, если я назначаю переменную NULL несколько раз, это вызывает ошибку. например, в продолжение приведенного выше примера,

      node->parent->left_child = node->right_child;

Я пытался понять, как ведет себя NULL-указатель, но не могу его понять. Не могли бы вы мне помочь?

1 ответ

Можно ли присвоить переменную-указатель NULL переменной-указателю?

Да. Вы можете назначить указатель другому, если значение, присвоенное из, было инициализировано. Если это значение равно нулю, все в порядке. Например, это нормально:

      Node* a = nullptr;
Node* b = nullptr;
a = b;
       node->right_child = node->left_child->right_child; // the program will exit here.

Это означает, что один из node или же node->left_childвероятно, недействительный указатель. Любой из них приведет к неопределенному поведению.


PS Не используйте NULLмакрос в C++. Это было устаревшим nullptr.

Другие вопросы по тегам