gpt4 book ai didi

c - 将结构与结构列表传递给函数

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:43 24 4
gpt4 key购买 nike

我有一个带有原型(prototype)的函数:

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]);

这很好用。但是,我还想做一个分析,我只使用一个 wave,这意味着列表只包含一个元素,因此我不需要调用第一个函数。我只想这样做:

procedureForEachWave(Barge, Settings, &data.waveList[0]);

但这行不通。为什么?我如何让它工作?需要澄清的是,数据现在被声明为变量,而不是指针,并且 Barge 和 Settings 已经是指针。 waveList 声明如下:

data.waveList = (struct wave*) malloc(sizeof(struct wave));

最佳答案

在不知道 procedureForEachWave 内部发生的任何事情的情况下,很难(如果不是不可能)说出问题是什么。

但是,看起来 data 在有效调用和无效调用之间的使用方式有所不同。如果他们使用相同的 data,则调用应该相同(用 0 代替 i)。如果它们不同,请提供此其他 data 的定义。

关于c - 将结构与结构列表传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10298222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com