У меня есть функция с прототипом:Passing структура со списком структур функционировать
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);
Я использую это в другой функции, где я в основном первый отправить указатель на данные структуры, и затем внутри этой функции ion функция «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));
Что вы подразумеваете под "не работает"? Вы получаете ошибку компиляции или ошибку времени выполнения или это дает вам результаты времени выполнения, которых вы не ожидаете? Если компилятор/компоновщик совместим, отправьте точное сообщение об ошибке. – Mahesh
Я не могу понять это даже после нескольких чтений. Pls рассматривает перефразирование Qn в простых терминах –
Не работает - вы имеете в виду, что он не компилируется или не работает, как вы предполагаете во время выполнения? –