Как передать матрицу m в foo()? если мне не разрешено изменять код или прототип foo()?Передача двумерного массива с помощью указателя
void foo(float **pm)
{
int i,j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
printf("%f\n", pm[i][j]);
}
int main()
{
float m[4][4];
int i,j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
m[i][j] = i+j;
foo(???m???);
}
Техника, которую вы используете не имеет никакого отношения к динамическим распределение памяти вообще. Поскольку размеры массива постоянны, вы можете просто выделить память «в стеке», как и в OP. – AnT
Конечно, но это не так - решение проблемы заключается в изменении типа m. –
@ Карл Норум: Не обязательно. Проблема, как указано, кажется, подразумевает, что существующая 'foo' должна быть сделана для работы с существующим' m'. И решение проблемы заключается в изменении типа того, что передается 'foo', а не типа' m'. – AnT