c++ - 将指针设置为 NULL 会影响您指向的原始项目吗?

标签 c++ c pointers linked-list

我有一个指向链表中节点的指针:

struct node *temp = head.next

如果我将此指针设置为 NULL,例如:

temp = NULL;

这也会影响我指向的节点吗?即 head.next 现在是 NULL?

最佳答案

这也会影响我指向的节点吗?即 head.next 现在为 NULL?

没有。


这样想。 head.next 是一个保存值(地址)的变量。当你这样做时

struct node *temp = head.next

现在 temp 也与 head.next 具有相同的值。

稍后当您更改temp 的值时,为什么head.next 所持有的值要更改。


这是当您复制变量的值(在这种情况下发生)与当您使变量引用其他变量并更改其内容时的区别。


如果你想要后者,那么你需要一个指向结构节点的指针

有点像

struct node **temp = &head.next;

现在如果你想改变 head.next 的内容也可以通过 temp 你可以这样做

*temp = NULL;

关于c++ - 将指针设置为 NULL 会影响您指向的原始项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275792/

相关文章:

c++ - 删除 boost::shared_ptr 的内容

c - C语言中的多态性

c - 用 C 直接读写压缩文件

C - 如何将多个值分配给 HashMap 中的同一个键?

c++ - 为什么 Clang 12 拒绝以 C++20 的方式初始化聚合?

C++运算符重载和隐式转换

c++ - 关于 unique_ptr 的表现

c++ - C/C++ 中不带替换的#define 是什么意思?

c - 声明指向 __far 指针的指针的正确方法是什么?

c++ - 什么是合成指针?