我对指针的概念有点疑惑。
当我尝试使用DoubleLinkList
void headInsert(DoubleLinkList head, int theData)
这个东西不工作。但这是工作:
void headInsert(DoubleLinkList*& head, int theData)
为什么?
这是对指针的引用,这意味着指针是通过引用传递的。这意味着当函数返回时,对函数内部指针的更改仍然有效。
相反,当指针按值传递时(即没有引用&
),它实际上在调用函数时被复制到一个新的局部变量中。这意味着,如果指针发生了变化,只有这个本地副本发生了变化,而从函数外部传递过来的指针不会发生变化。
将指针作为引用传递,使函数可以更改指针指向的对象(当指针按值传递时,这是不可能的)。
从右到左读。
在第一种情况下,head
是DoubleLinkList
。
在第二种情况下,head
是一个指向DoubleLinkList
的指针的引用。