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