Можно ли выделить 1D памяти
int *x=(int *)malloc(100*sizeof(int));
, а затем преобразовать возвращенный указатель в двумерный массив, например,
int **y=(int **)x;
и получить к нему доступ, как если бы это был двумерный массив, например y[1][2] = 12;
Моя цель - взять сегмент общей памяти и вернуть массив 1D, 2D, ... ND в зависимости от того, как пользователь хочет интерпретировать это линейное пространство с максимальной эффективностью (то есть без объявления нового N-мерного массива и копирования данных в он).
Во второй ноте, есть ли библиотека для C, которая обрабатывает N-мерные массивы, получает из них срезы и эффективно их транспонирует (например, преобразовывает мажор строки в мажор)?
спасибо,
bliako