Использование указателей при вызове функций: "error C2100: недопустимое косвенное обращение" - C (СИ)
Формулировка задачи:
Просьба помочь с пониманием указателей в функциях.
Переползаю с delphi, поэтому просьба сильно не пинать.
Есть большая программа, пытаюсь написать отдельный модуль,
он получает данные из основной программы,
обрабатывает "кусками" и выдаёт обратно результат.
При моём текущем понимании указателей, правильная "конструкция":
Но не пропускает nmake: "error C2100: недопустимое косвенное обращение"
Если пишу
компилируется, но программа "падает"
Так-же и с "*outputSizeBytes"...
int c_dec(const void *input, int inputSizeBytes, void *output,
int *outputSizeBytes)
{
const guint8 *dataIn = (const guint8 *)input; //типизируем входные данные?
guint16 *dataOut = (guint16 *)output; //типизируем выходные данные?
short synth[80];
....
for (fr_num=0; fr_num<FramePerInput; fr_num++){
//работает функция с блоком данных, выводит в synth
for (j=0; j<80; j++){
*dataOut[j+(fr_num)*80]=synth[j]; //Передаём "кусок" данных на выход
}
}
*outputSizeBytes=FramePerInput*(80*(sizeof (short))); // сообщаем количество данных на выходе
....
}*dataOut[j+(fr_num)*80]=synth[j];
dataOut[j+(fr_num)*80]=synth[j];
Забыл добавить: основная программа сменила версию, и в новой уже не работает.
В предыдущей версии работало с разименованными переменными.
Т.е. дело в том как вызывается функция, с какими параметрами?
Решение задачи: «Использование указателей при вызове функций: "error C2100: недопустимое косвенное обращение"»
textual
Листинг программы
*outputSizeBytes = inputSizeBytes * 2;
Объяснение кода листинга программы
- Переменная
inputSizeBytesсодержит размер входного массива в байтах. - Переменная
outputSizeBytesбудет содержать размер выходного массива в байтах. - Выполняется операция умножения
inputSizeBytesна 2. - Результат сохраняется в переменной
outputSizeBytes.