C
язык программирования на самом деле не имеет Multi-Dimensional Arrays
, но есть несколько способов их симулировать. Способ передачи таких массивов в функцию зависит от способа моделирования нескольких измерений. Я думаю, что вы хотите использовать Dynamically Allocated VLA
. См. ссылку для получения дополнительной информации.
В C
(& C++
) данные вашего 2D-массива будут сохранены row-by-row
(Row-Major Order
) и длинастроки всегда необходимо получить правильное смещение памяти для следующей строки. Первый нижний индекс, следовательно, указывает только объем памяти, который необходим при объявлении массива, но больше не требуется для последующего вычисления смещения. Таким образом, вы можете оставить первый индекс пустым, и вам нужно предоставить остальные индексы в объявлении и определении функции.
Например, если размер столбца массива равен 4, то:
void displayData (int, int, float[][4]);
void hasValue (int, int, float[][4]);
void countValues(int, int, float[][4]);
РЕДАКТИРОВАТЬ:
Вы можете использовать функцию ниже, чтобы достичь того, что вы хотите:
void my_function(int rows, int cols, int array[rows][cols])
{
int i, j;
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
array[i][j] = i*j;
}
}
}
Вы должны убедиться, что вы передаете массив правильного размера вваша функция.