动态链表–智障般的详解(3)为什么需要二级指针

在上一章里面提到我们传到insert里面的是一个指针的地址,与其对应的在insert里面就需要一个二级指针作为input。

注意:number *start等于struct Number **start

为什么需要二级指针呢?

  1. 首先要清楚,只是要修改头指针则必须传递头指针的地址(在我们的例子里面,头指针是start)也就是二级指针,否则传递头指针即可(即头指针本身)。
  2. 这与普通的变量的道理是一样的,我们需要在sub-function改变普通变量在main的值,需要传递其地址到sub里面去。二级指针就是取的main里面的指针的地址即指针的指针。
  3. 如果我们只用一级指针,则只能修改指针所指的变量但我们需要的是改变头指针的地址,所以我们需要二级指针来改变指针的地址。
  4. 创建链表和销毁链表都需要二级指针。(因为改变了指针的地址)
  5. 与之对应的,如果我们仅仅只是要插入,删除,遍历,清空结点,一级指针就够用了。(如果有时间我可能会在最后写一下一级指针)

在我们的例子里面,我们需要的是创造一个链表,所以我们需要改变指针的地址,需要二级指针。

发表评论

电子邮件地址不会被公开。