Можно ли присвоить переменную-указатель 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
.