Осмотревшись я построил функцию, которая принимает матрицу и выполняет все, что мне нужно на него следующим образом:Переходя матрица к функции, C
float energycalc(float J, int **m, int row, int col){
...
}
В основной размер массива определен и заполнен, однако я не могу это проходит мимо самой функции:
int matrix[row][col];
...
E=energycalc(J, matrix, row, col);
Это приводит предупреждение во время компиляции
"project.c:149: warning: passing argument 2 of ‘energycalc’ from incompatible pointer type project.c:53: note: expected ‘int **’ but argument is of type ‘int (*)[(long unsigned int)(col + -0x00000000000000001)]’
и приводит к ошибке сегментации.
Любая помощь очень ценится, спасибо.
'поплавка energycalc (поплавок J, Int строку, Int COL, Int M [строка] [столбец]) {' – BLUEPIXY
Массив массивов не то же самое, как указатель на указатель, смотри, например, [этот старый мой ответ] (http://stackoverflow.com/a/18440456/440558), чтобы понять, почему. Вы могли бы пройти с указателем на массивы (например, 'int (* m) []'). –
@ legendends2k Вопрос был отмечен только 'C' ... Я узнал, как тяжело, когда Cool Guy жаловался на мой ответ. –