【发布时间】:2016-04-24 23:27:28
【问题描述】:
我使用的是我自己用 stuct 制作的链表。该结构有 2 个整数和 1 个指向另一个结构的指针,下一个。
我正在使用 LL(链表),但在其中一个函数中,某个指针不会改变。
AddChain( &MakeChain(..values..), added )
这就是我调用该函数的方式,我向她发送一条新链以链接到大链,如果没有大链,则它为 NULL,因此它将替换它。在此调用中添加了一个 NULL ptr 到链结构。
void AddChain(PolyChain* pol, PolyChain* main) // adds the new piece to the chain
{
PolyChain *current = main, *back = NULL;
if (main == NULL)
{
pol->next = NULL;
main = pol;
return;
}
... \\ there is continuation of the function but it wont get so far without main one
}
现在,您可以看到主链是否为 NULL,我使用它来引用与我得到的新链相同的东西。我在调试器中运行,并且 pol HAS 有一个值并在行之后:
main = pol;
main 实际更改为指向 pol 指向的内容。但是在 AddChain 中返回后,AddChain 中 main 的 add 仍然是 NULL。它没有从函数中取回值,也没有像按值而不是按引用那样更改添加的指针,而是按引用。
是什么导致了这个问题?
编辑:MakeChain 返回一个 PolyChain,AddChain 得到 PolyChain*,这就是我使用 & 的原因。
【问题讨论】:
-
您按值传递指针。想想吧。
标签: c++ function pointers return