void add_five(int& a) { a += 5; } int main() { int number = 3; add_five(number); std::cout << number << std::endl; // prints 8 return 0; }
我有一些在链表上工作的代码。我过了两个 Node* 把它放入函数中。
Node*
void LinkedList::move_five_nodes(Node* ptr1, Node* ptr2) { ... } ... void LinkedList::anotherFunction() { Node* leader; Node* trailer; ... move_five_nodes(leader, trailer); ... }
leader 和 trailer 指针变量将被分配到 节点* 左值 ptr1 和 ptr2
leader
trailer
节点*
ptr1
ptr2
Node* ptr1 = leader; Node* ptr2 = trailer;
问题是 ptr1型 ptr2型 是函数内部的独立局部变量。最初,它们指向与实际参数指针相同的位置。但是,我的函数移动了一些节点,在函数的末尾 ptr1型 ptr2型 都变了。我希望这些更改也在原始变量中 领导 拖车 ,就像参考文献一样。所以即使在 ptr1型 和 ptr2型 领导 拖车
ptr1型
ptr2型
领导
拖车
我该怎么做?也许你可以把指针 int& ? 或者用指针指向指针?我想通过引用传递一个指针,但我不知道怎么做。
int&
我想通过引用传递一个指针,但我不知道怎么做。
为此,请考虑以下代码段
#include <iostream> void test(int*& t) { t = nullptr; } int main() { int* i = new int(4); test(i); if (i == nullptr) std::cout << "I was passed by reference" << std::endl; }
其中is通过引用传递到test,其中它被设置为nullptr,程序打印: I was passed by reference
I was passed by reference
我认为这个例子应该说明如何通过引用函数来传递指针。
void LinkedList::move_five_nodes(Node*& ptr1, Node*& ptr2) { ... }