【问题标题】:[C++]Does NULL actually hold a specific address in memory as well?[C++]NULL 是否实际上也保存了内存中的特定地址?
【发布时间】:2018-05-22 10:23:22
【问题描述】:

当我在做一些链表练习时,我的问题出现了。我的任务是将两个链表合并为一个,所以我首先需要获取第一个链表的最后一个节点的地址,并将第二个链表的第一个节点分配给我的第一个链表中最后一个节点的下一个节点列表,即

list1->last->next = list2->first;

所以我们都知道,list1.last->next 是 NULL,让我们说如果我这样做:

Node * lastNext = list1->last->next;
lastNext = list2->first;

这行得通吗?

谢谢大家!

【问题讨论】:

  • 注意:与编辑历史所说的相反,我没有投票关闭这个问题作为重复。它不是,至少不是所引用的问题。我投票决定关闭它,因为它是“不清楚你在问什么”。
  • 是的,在画了几张图表后,我意识到你在回答中所说的话。指针相等并不意味着它们变成相同的东西,尽管我一开始就知道,但似乎我还没有完全掌握完整的概念,所以有时我仍然会犯错误。这个问题与NULL无关。即使 list1->last->next 不为 NULL,我在这里所做的只是将 lastNext 的引用从 list1->last->next 更改为 list2->first 并且不会以任何方式影响列表。无论如何,我总是必须将头分配给第一个列表中最后一个节点的下一个指针。

标签: c++ pointers null


【解决方案1】:

不,它不会起作用,而且原因与NULL无关。这与您在这里所做的只是更改本地指针变量的值有关。您不会以任何方式影响列表。具体来说,您不会更改 list->last->next 的值。

如果lastNext 是一个引用

Node *&lastNext = list1->last->next;

那就另当别论了。但事实并非如此。 NULL 仍然不会发挥作用。

【讨论】:

  • 感谢 EJP!您能否详细说明“您在这里所做的只是更改本地指针变量的值”?我是否更改了 list1->last->next 的值?和什么?谢谢! :)
  • 在特殊情况下,您最终会取消引用 NULL 对吗?编辑:我误读了这个问题,我的错。
  • @Hang 我不知道你为什么要问我已经回答过的问题。 '具体来说,你并没有改变list->last->next 的值。您肯定知道lastNext = list2->firstlastNext 的值更改为什么?
  • @Yashas 这里根本没有任何尊重,更不用说NULL了。
  • @EJP 哦,是的,我的错......但你说“你在这里所做的只是改变本地指针变量的值”。我不知道我改变了哪个值?我只能看到,如果有一个值发生了变化,那么它将是“list1->last->next”?
猜你喜欢
  • 2020-07-06
  • 2020-11-08
  • 2012-05-22
  • 2011-11-13
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2018-10-22
相关资源
最近更新 更多