在C中,C++'*&'的等价物是什么?它甚至存在吗?

use*_*386 0 c c++

例如,如何在C中实现这个C++代码?

void someFunction(type *&outParamOnly) ;
returnType someOtherFunction() ;
...
returnType someOtherFunction()
{
    type *data = NULL ;
    someFunction(data) ;
    ...
}
...
void someFunction(type *&outParamOnly)
{
    bool condition ;
    int array_len ;
    ...
    if(condition) // variable's value passed to this function stays as it was
    return ;
    ...
    outParamOnly = new type[array_len] ; // value is moddified and it's reflected in 'someOtherFunction'
    ...
}
...
Run Code Online (Sandbox Code Playgroud)

我问,因为我不知道如何创建这样的等价物.它复杂吗?事实上我对C语言知之甚少,但更多关于C++语法等等.我习惯用C++编写,一旦我尝试用C来感受差异,我在尝试实现我想要的东西时表现不佳.我希望得到肯定的答案 - 可以创建一些等价物,但它会在C++中运行得更快还是更慢?请回答.

Dav*_*ave 8

最近的等价物是指向指针的指针; **.C没有参考.

通话和功能略有不同; 你必须发送一个指向变量的指针,并在你想要使用它时取消引用它:

void someFunction(type **outParamOnly)
    ...
    *outParamOnly = whatever;
}

someFunction(&data);
Run Code Online (Sandbox Code Playgroud)

这是C中相当典型的模式.