編集: 混乱を避けるために削除された C++ ビット
私はそのようなデータの配列を持っています
int numSamples = 16;
float *lData = (float*)calloc(numSamples, sizeof(float));
...そして、このデータをこのような定義で関数に渡したいと思います。. .
void processSampleBlock (const float ** inputChannelData,
int numInputChannels,
...)
ご覧のとおり、この関数は複数のチャネルを持つことができる 2D 配列を受け入れます。私のデータは 1 つのチャネル (1D) のみですが、このようなキャストを行うことで、コードを正常にコンパイルできます。.
processSampleBlock ((const float**)(lData),
1,
...)
ただし、実行時に不正なアクセス エラーが発生し、関数ブロック内のコードが関数内のデータを逆参照しようとします。.
for (int nn=0; nn< numSamples; ++nn)
{
float x = inputChannelData[0][nn]; //--> Computer says no
}
私は C スタイルの多次元配列では役に立たず、おそらくここで根本的な誤りを犯しています。どんな助けでも素晴らしいでしょう!ありがとう