【发布时间】:2016-01-10 17:41:24
【问题描述】:
我读过“在 C++ 中检查引用是否等于 null 是没有意义的”——因为引用永远不能有 null 值。但是,我发现这个陈述在我想出的以下示例中不成立:
void InsertNode(struct node*& head, int data)
{
cout << head << endl;
node* temp = new node();
temp->data = data;
temp->next = NULL;
if (head == NULL)
head = temp;
else
{
temp->next = head;
head = temp;
}
}
我正在检查if (head == NULL)。尽管 head 作为参考传递,但我正在检查它是否等于 NULL。这与我读过的“检查引用是否等于 null 在 C++ 中毫无意义”的陈述相矛盾 - 任何人都可以解释一下我的理解是否正确吗?谢谢。
【问题讨论】:
-
C++ 的参数列表中不需要
struct。结构和其他类型的单独命名空间仅存在于 C 中。 -
您没有检查参考。您正在检查所指对象,它恰好是一个指针。
-
测试引用将是
if (nullptr == &head)。 -
@n.m 引用是“某物”的别名,这个“某物”被称为所指对象吗?那么这意味着,检查引用和检查引用是相同的权利 - 给定的引用只是引用的别名。
-
@Jarod42 "&head" 不是返回头部地址吗?
标签: c++ pointers reference pass-by-reference