В чем разница между двойным ** и двойным (*) [2].Разница между двойными ** и двойными (*) [2] в C
Если я хорошо понимаю, double ** является указателем на указатель double, поэтому он может быть 2D-массивом любого размера, тогда как double (*) [2] является указателем на массив double [2 ].
Так что, если это правильно, как можно успешно передать функцию.
Например, в:
void pcmTocomplex(short *data, double *outm[2])
, если я прохожу двойной (*) [2] в качестве параметра, у меня есть следующее предупреждение:
warning: passing argument 2 of ‘pcmTocomplex’ from incompatible pointer type
note: expected ‘double **’ but argument is of type ‘double (*)[2]’
Что такое правильный путь, чтобы пройти двойной (*) [2] функции?
EDIT: код вызова
fftw_complex *in; /* typedef on double[2] */
in = (fftw_complex *) fftw_malloc(sizeof(fftw_complex) * 1024);
pcmTocomplex(data, in);
показать нам вызывающий код –
'double * [2]' не совпадает с 'double (*) [2]'. –
Прочтите раздел 6 [comp.lang.c FAQ] (http://c-faq.com/). –