Передача одной строки в 3D-массиве в функцию - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь передать строку многомерного массива функции как указатель. Трехмерные массивы хранятся внутри следующей структуры.

typedef struct{
double complex CUR[MAX_CHANNELS][MAX_HARM][4];
double complex VOL[MAX_CHANNELS][MAX_HARM][4];
}VALS;

Я пытаюсь передать одну строку в следующую функцию в качестве параметра.

void foo(double complex *V,double complex *I);

В основной программе я передаю первая строка как указатель. Но при выполнении я получаю «предупреждение о несовместимости типа указателя».

foo(&VALS.VOL[2][0],&VALS.CUR[2][0]);

1 Ответ

1 голос
/ 07 августа 2020

Поскольку третье измерение по-прежнему является массивом, результирующий тип vals.VOL[2][0] и vals.CUR[2][0] имеет тип double* (указывает на первый элемент массива). поэтому & не требуется:

foo(vals.VOL[2][0], vals.CUR[2][0]);
...