В этом случае это будет не двумерный массив char
, а массив указателей типа char *. Например:
void arrayInput(char **inputArray) {
printf("%s\n", inputArray[0]);
printf("%s\n", inputArray[1]);
}
int main() {
char* strings[] = { "hello", "world" };
arrayInput(strings);
}
Тип strings
имеет тип char*[]
(массив указателей на символ), который уменьшается до char**
(указатель на указатель на символ).
-
Для истинного 2D-массива, где строки объединяются в одном и том же буфере памяти, размерность второй строки должна быть частью типа. Например,
void arrayInput(int mat[][2]) {
printf("%d %d\n", mat[0][0], mat[0][1]);
printf("%d %d\n", mat[1][0], mat[1][1]);
}
int main() {
int mat[][2] = { {1, 2}, {3, 4} };
arrayInput(mat);
}
Здесь mat
имеет тип int[2][2]
, который уменьшается до int[][2]
(массив массива 2 int) и int(*)[2]
(указатель на массив 2 int).