Вы не можете назначить (правильный термин - преобразовать) 2D-массив в указатель на указатель. Причина в том, что преобразование 1D-массива в указатель (в первый элемент) не применимо в более высоких измерениях.
Что вы можете сделать, это объявить указатель на массив из двух int. Преобразование в этом случае действительно.
int arrayA[2][2] = {{1,2},{3,4}};
int (*arrayB)[2];
arrayB = arrayA;
Дело реализовать, однако, заключается в том, что *arrayB
является адрес первого элемента arrayA
. В этом примере этот элемент представляет собой массив, инициализированный с использованием {1,2}
.
Отредактировано, чтобы добавить следующее после того, как исходный вопрос был изменен, чтобы задать другой вопрос.
Вышеупомянутое требует согласованности измерений, поэтому не будет работать в вашем (теперь отредактированном примере), где размеры не совпадают. Это последнее (самое правое) измерение, которое должно соответствовать.
Если вы хотите несовпадения размеров, нет другого решения, кроме выравнивания массива до одного измерения.
Какова ваша текущая проблема? Чего вы хотите достичь? – user463035818
два массива имеют совершенно разные размеры. Как бы вы «работали с arrayC», если в нем всего 4 или 3 элемента? – user463035818
Я бы сохранил размеры в другой переменной – rkgghz