函数无意义地更改引用

时间:2018-05-16 10:14:56

标签: c++ pointers reference

我有一个代码:

Node** ptrlow = ReturnLowest(root); ///pointer po pointer pointing lowest
//DeleteNode(ptrlow);
Test(ptrlow);

我认为这段代码的作用并不重要,重要的是,当我意识到函数DeleteNode(Node **& node)没有任何改变ptrlow的值时,我创建了一个名为Test的函数:

void Test(Node** &node)
{
    return;
}

这实际上是整个函数,它什么也没做,但它改变了传递给该函数的ptrlow的值。

在进入测试功能之前: link to screen from visual studio 进入后: link to screen from visual studio 在调试器中更进一步,节点更改: link to screen from visual studio

有人可以向我解释这有可能吗?我将非常感激!

3 个答案:

答案 0 :(得分:2)

在最后一张图片中,调试器超出了函数的范围,因此传递的参数应该已被丢弃(PATCH http://localhost:3000/api/Feedbacks2 404 (Not Found) 不再存在)。

node的值与预期的一样。

答案 1 :(得分:0)

我知道它应该保持不变,但是看起来,它真的发生了变化: Compare this screen with the first one

答案 2 :(得分:0)

我尝试了一些代码行,DeleteNode函数,有很多代码。

DeleteNode function at the beggining

DeleteNode function one step further; node changed