gpt4 book ai didi

c++ - 将指针参数传递给双指针参数

转载 作者:太空宇宙 更新时间:2023-11-04 15:58:59 26 4
gpt4 key购买 nike

我有一系列调用,其中最终调用需要双指针。似乎我最后总是得到一个空指针。我已将其简化为以下内容。最后的调用是一个返回指针的库调用。

这是简化的困惑。 MainCaller 中的 foo 始终为 0,即使我知道(通过库测试方法)该对象确实存在。

void MainCaller(){
foo_t *foo;
MiddleProcessor(foo);
// foo results as 0
}

void MiddleProcessor(foo_t *foo){
if(1){
ProcessorA(foo);
}else{
ProcessorB(foo);
}
}

void ProcessorA(foo_t *foo){
FinalCall(&foo);
}

void FinalCall(foo_t **foo){
*foo = some_lib_call();
lib_call_test_is_good_foo(foo); // true :)
}

最佳答案

问题是您正在按值传递指针,而 FinalCall 永远不知道原来的位置。

这些改变可能会有所帮助:

void MainCaller(){
foo_t *foo;
MiddleProcessor(&foo); // Passing the address of foo means foo can be overwritten
// foo results as 0
}

void MiddleProcessor(foo_t **foo){
if(1){
ProcessorA(foo);
}else{
ProcessorB(foo);
}
}

void ProcessorA(foo_t **foo){
FinalCall(foo);
}

void FinalCall(foo_t **foo){
*foo = some_lib_call();
lib_call_test_is_good_foo(foo); // true :)
}

关于c++ - 将指针参数传递给双指针参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49077304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com