无法将1D阵列转换为2D阵列

lea*_*vst 0 c arrays multidimensional-array

编辑:删除C++位以避免混淆

我有一个像这样的数组

int numSamples = 16;
float *lData  = (float*)calloc(numSamples, sizeof(float));
Run Code Online (Sandbox Code Playgroud)

...我希望将此数据传递给具有此类定义的函数...

void processSampleBlock (const float ** inputChannelData,
                         int    numInputChannels,
                         ...)
Run Code Online (Sandbox Code Playgroud)

如您所见,此函数接受可以具有多个通道的2D阵列.我的数据只是一个通道(1D),但我可以通过像这样的演员来获得编译好的代码..

processSampleBlock ((const float**)(lData),
                            1,
                            ...)
Run Code Online (Sandbox Code Playgroud)

但是,我在运行时遇到错误的访问错误,然后功能块中的代码尝试取消引用该函数内的数据..

for (int nn=0; nn< numSamples; ++nn)
{
    float x = inputChannelData[0][nn]; //--> Computer says no
}
Run Code Online (Sandbox Code Playgroud)

我对C风格的多维数组没用,我可能在这里犯了一个基本错误.任何帮助都会很棒!谢谢

Dan*_*ani 5

你需要给它一个指向行数组的指针,所以你有一行给它一个指向该行的指针:

float *data = ...;
processSampleBlock(&data, 1);
Run Code Online (Sandbox Code Playgroud)