所以我在C++上用链接表示来处理最大堆树。由于我无法上传代码,因为它很长,但在调试时我意识到执行将停止在将Null指针分配给指针的表达式处。例如
// if node->left_child->right_chile == NULL
node->right_child = node->left_child->right_child; // the program will exit here.
这种操作经常发生在我的代码中的delete方法中,所以我也在想,如果我多次分配NULL变量,它会导致错误。例如在上述例子的延续中,
node->parent->left_child = node->right_child;
我试图弄清楚NULL指针的行为,但我无法完全理解。你能帮帮我吗?
您可以将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
中的一个可能不是有效的指针。任何一种都会导致不明确的行为。
p.S.不要在C++中使用NULL
宏。它已被nullptr
淘汰。