我有一个用C写的函数

FindBeginKey(KeyListTraverser, BeginPage, BeginKey, key1);

BeginKey是函数调用之前的指针,我没有初始化它,比如
BeginKey = NULL;

FindBeginKey()函数中,我将BeginKey分配给另一个指针,并尝试在函数中打印出BeginKey的当前地址,它工作正常。
但当代码从函数返回时,我试图再次打印出BeginKey的地址,它显示0x0
为什么会发生这种情况,如果我想保留函数中分配的地址,我应该怎么做?

最佳答案

要从函数中传递一个值,必须通过引用传递,而不是像C函数那样通过值传递。为此,请使参数成为指向要传递的类型的指针。然后使用&(地址操作数)将值传递到调用中。
例如

FindFoo(FOO** BeginKey);

并称之为:
FindFoo(&BeginKey);

在函数中:
*BeginKey = 0xDEADC0DE;

10-04 23:14