我有一个用C写的函数
FindBeginKey(KeyListTraverser, BeginPage, BeginKey, key1);
BeginKey是函数调用之前的指针,我没有初始化它,比如
BeginKey = NULL;
在
FindBeginKey()
函数中,我将BeginKey
分配给另一个指针,并尝试在函数中打印出BeginKey
的当前地址,它工作正常。但当代码从函数返回时,我试图再次打印出
BeginKey
的地址,它显示0x0
。为什么会发生这种情况,如果我想保留函数中分配的地址,我应该怎么做?
最佳答案
要从函数中传递一个值,必须通过引用传递,而不是像C函数那样通过值传递。为此,请使参数成为指向要传递的类型的指针。然后使用&
(地址操作数)将值传递到调用中。
例如
FindFoo(FOO** BeginKey);
并称之为:
FindFoo(&BeginKey);
在函数中:
*BeginKey = 0xDEADC0DE;