【发布时间】:2022-01-11 00:43:21
【问题描述】:
我有 3 个指针:
Node* head;
Node* temp=head;
Node* p=new Node(2);
现在我分配:
temp->next=p
下一个头也会变吗?
head->next=?
【问题讨论】:
-
head中的next不会不会在我们写temp->next=p;时被更改。它可以改变,但为此你必须告诉我们更多关于你的数据结构实际上是什么样子的。所以真正的答案是,“它可以/不能根据你拥有的结构而改变”。如果有人告诉你,是或否,100% 保证他/她会撒谎,因为问题不完整,因为它没有提供有关Node外观的任何信息。 -
是的,如果
head实际指向某个分配的内存,temp将指向同一个内存。 -
如果
head指向Node对象,temp将指向同一个Node对象。通过任一指针修改该对象都会修改该对象。 -
@JasonLiam 我不同意你的论点。无论结构如何,
head和temp都指向同一个内存。head->next和temp->next是同一个东西,所以对temp->next的任何分配都会改变head->temp。 100% 保证。 -
您应该搜索的关键字是aliasing。
标签: c++ pointers linked-list