实现链表时的等号

时间:2013-11-04 00:02:49

标签: c++ pointers

当您尝试切换指针时,“=”的含义是什么。

例如:current->next = previouscurrent = previous

1 个答案:

答案 0 :(得分:5)

让我们进行第二项任务current = previous。这里,小方框是指针本身的值,而右边的矩形是指向的东西。

转让前:

         +---+          +-----------+
current  | --|--------> | Obj1      |
         +---+          +-----------+

         +---+          +-----------+
previous | --|--------> | Obj2      |
         +---+          +-----------+

分配后,currentprevious 都指向对象Obj2。

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

重要的要点:

  • 对于普通的原始指针,current过去指向的原始Obj1不变。它不会因作业而被“删除”或破坏。
  • 事实上,该作业既不会修改 <{1}}也不会修改Obj1
  • 如果您更改Obj2(例如,使用Obj2),则当您通过 *current = func()或{{1}访问(读取)时,将反映其更改状态}}。
  • 记住指针存储内存地址非常重要,内存地址只是数字。因此,当您指定另一个指针时,您只需在其中添加一个新数字(即地址)。