在以下代码中:
void insert(Node *& aNode, int x) {
if (!aNode) {
aNode = new Node(x);
aNode->next = aNode;
return;
}
Node *p = aNode;
Node *prev = NULL;
do {
prev = p;
p = p->next;
if (x <= p->data && x >= prev->data) break; // For case 1)
if ((prev->data > p->data) && (x < p->data || x > prev->data)) break; // For case 2)
} while (p != aNode); // when back to starting point, then stop. For case 3)
Node *newNode = new Node(x);
newNode->next = p;
prev->next = newNode;
}
什么是Node *&amp;阳极?
我应该如何使用此功能,我的意思是,我应该传递哪种类型的参数?
答案 0 :(得分:10)
我认为这段代码是C ++,而不是C,Node *&aNode
是对Node
指针的引用,所以你要将Node*
传递给函数,函数会引用它(因此Node*
所指向的内存位置可能会发生变化)。
您可能会发现the Wikipedia article on References (C++)很有趣。
一个简单的例子:
#include <iostream>
void addOneToValue(int num) {
++num;
}
void addOneToRef(int &num) {
++num;
}
int main() {
int num = 0;
// print 0
std::cout << num << std::endl;
// print 0 again (addOneToValue() has no effect)
addOneToValue(num);
std::cout << num << std::endl;
// print 1 (addOneToRef() changes the value of num)
addOneToRef(num);
std::cout << num << std::endl;
}
@ crashmstr的评论提醒我,我应该说它们与指针有什么不同。 Wikipedia does a better job that I could though: