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

问题描述

所以我正在研究最大堆树,并在 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 指针的行为方式,但我无法完全理解。 你能帮我吗?

解决方法

你能把一个NULL指针变量赋值给一个指针变量吗?

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

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

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


附言不要在 C++ 中使用 NULL 宏。它已被 nullptr 淘汰。