0

所以我正在研究带有 C++ 链接表示的最大堆树。由于我无法上传代码,因为它很长,但是在调试时我意识到执行将停止在将 Null 指针分配给指针的表达式处。例如

// 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 指针的行为方式,但我不太明白。请你帮助我好吗?

4

1 回答 1

2

您可以将 NULL 指针变量分配给指针变量吗?

是的。只要已初始化分配的值,您就可以将指针分配给另一个。如果该值为空,则可以。例如,这很好:

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

这意味着nodeor之一node->left_child可能不是有效的指针。其中任何一个都会导致未定义的行为。


PS 不要NULL在 C++ 中使用宏。它已经过时了nullptr

于 2021-05-06T17:40:21.773 回答