Да. Ты правильно рассуждаешь. Многомерные зубчатые массивы имеют накладные расходы в виде служебных указателей которые должны предварять вход в каждое измерение. И не просто в измерение а там получается
дерево массивов массивов массивов указателей на данные.
Но для такого твоего кейса матрицу можно линеаризовать. И разложить последовательно.
int arr[6] = { 1,2,3,1,2,3};
Формула доступа будет простая. Надо будет к базовому указателю прибавить дистанцию от начала
до нужного элемента помня о том что LINE_WIDTH у нас уже известен и это длина строки в элементах.
*(basePointer + i * LINE_WIDTH + j)
Таким-же образом можно вывести формулу для 3х, 4х и более измерений. И массив можно отобразить
на гиперкуб.