Массивы распадаются на указатели на их первый элемент.
Если у вас есть простой массив, такой как
float simple_array[SIZE];
, то он будет распадаться (как &simple_array[0]
) до типа float *
.
Если каждый элемент в массиве, в свою очередь, является массивом, то затухание происходит только для первого уровня, и вы все равно получаете указатель на первый элемент «внешнего» массива. Это будет указатель на массив.
Таким образом, для массива, подобного
float A[n][m];
, он будет уменьшаться (все еще используя &A[0]
) до типа float (*)[m]
.
Помня, что вам нужно передать размеры массива в функции, объявление transposed_matrix
может выглядеть так:
float transposed_matrix(int n, int m, float (*a)[m]);