我有一个原型函数:
void procedureForEachWave(struct barge *Barge, struct settings *Settings, struct wave *Wave)
在另一个函数中,我有另一个名为 的结构threadData
,我用它来向在多个线程上运行的函数发送信息,并且该结构的元素之一是 的列表struct wave
,因此该代码的简短版本如下:
struct threadData data;
data.waveList = (struct wave*) malloc(sizeof(struct wave)*nrOfWaves);
我在另一个函数中使用它,我基本上首先发送一个指向结构数据的指针,然后在这个函数内部,在这样的循环中调用“procedureForEachWave”函数:
procedureForEachWave(data->Barge, data->Settings, &data->waveList[i]);
这工作正常。但是,我还想做一个分析,我只使用一个波,这意味着列表只包含一个元素,因此我不需要调用第一个函数。我只想这样做:
procedureForEachWave(Barge, Settings, &data.waveList[0]);
但这不起作用。为什么?以及如何让它工作?为了澄清,数据现在被声明为变量,而不是指针,并且 Barge 和 Settings 已经是指针。waveList 是这样声明的:
data.waveList = (struct wave*) malloc(sizeof(struct wave));