Как я вижу, int *x[n][m]
объявляет x
как 2-мерный массив указателей на целые числа, поэтому выделение памяти должно быть таким же простым, как x[i][j] = new int
, и, как и ожидалось, оно отлично работает. Теперь, если я изменил объявление на:
int (*x)[n][m]
x[i][j] = new int
больше не работает и приводит к ошибке компиляции.
x = (int(*)[n][m]) malloc (sizeof(int[n][m]))
однако компилируется. Из нескольких тестов, которые я выполнил, после выделения памяти различные комбинации объявления/распределения, похоже, не влияют на значения, хранящиеся в переменной. Я что-то упускаю? Итак, мой вопрос: Есть ли разница между int * x [n] [m] и int (* x) [m] [n]. Как int (* x) [n] [m] хранится в памяти?