实现链表时的等号

Equal sign when implementing a linked list

本文关键字:链表 实现      更新时间:2023-10-16

当您尝试切换指针时,"="的含义是什么?

例如:current->next = previouscurrent = previous

让我们进行第二个作业,current = previous 。 在这里,小框是指针本身的值,而右侧的矩形是它们指向的内容。

作业前:

         +---+          +-----------+
current  | --|--------> | Obj1      |
         +---+          +-----------+
         +---+          +-----------+
previous | --|--------> | Obj2      |
         +---+          +-----------+

赋值后,currentprevious指向对象 Obj2。

         +---+          +-----------+
current  | --|--+       | Obj1      |
         +---+  |       +-----------+
                |
         +---+  +-----> +-----------+
previous | --|--------> | Obj2      |
         +---+          +-----------+

重要要点:

  • 对于普通的原始指针,current过去指向的原始 Obj1 保持不变。 它不会因转让而"删除"或销毁。
  • 事实上,该任务既没有修改Obj1,也没有修改Obj2本身。
  • 如果您更改 Obj2(例如,使用 *current = func() ),那么当您通过 currentprevious 访问(读取)它时,它将反映其更改的状态。
  • 记住指针存储内存地址
  • 非常重要,内存地址只是数字。因此,当您将指针分配给另一个指针时,您只需在其中放置一个新数字(即地址)。