私はプロトタイプを持つ関数を持っています:
void procedureForEachWave(struct barge *Barge, struct settings *Settings, struct wave *Wave)
別の関数には という別の構造体がthreadData
あり、これを使用して複数のスレッドで実行される関数に情報を送信します。この構造体の要素の 1 つは のリストでstruct wave
あるため、このコードの短いバージョンは次のようになります。
struct threadData data;
data.waveList = (struct wave*) malloc(sizeof(struct wave)*nrOfWaves);
これを別の関数で使用します。基本的に最初に構造データへのポインタを送信し、次にこの関数内で「procedureForEachWave」関数を次のようなループで呼び出します。
procedureForEachWave(data->Barge, data->Settings, &data->waveList[i]);
これはうまくいきます。ただし、ウェーブを 1 つだけ使用する分析も行いたいと考えています。つまり、リストには 1 つの要素しか含まれていないため、最初の関数を呼び出す必要はありません。私はこれをしたいだけです:
procedureForEachWave(Barge, Settings, &data.waveList[0]);
しかし、これは機能しません。なんで?どうすればそれを機能させることができますか?明確にするために、データはポインターではなく変数として宣言されるようになり、Barge と Settings は既にポインターになっています。waveList は次のように宣言されます。
data.waveList = (struct wave*) malloc(sizeof(struct wave));