Я знаю, об этом много говорили, но я не мог найти явной ссылки на то, что мне нужно.Доступ к многомерному массиву через указатель
Мне нужно иметь элемент структуры, который укажет на двумерный массив. Размер массива не фиксирован, каждый экземпляр структуры укажет на массив с другим размером.
Я думал о следующим образом:
struct towDimByPtr
{
int NumRow;
int NumCol;
int* ptr2TwoDim;
};
Тогда я буду иметь глобалам:
int arr1[30][90];
int arr2[20][10];
towDimByPtr towDim1;
towDimByPtr towDim2;
В INIT я сделаю:
towDim1.ptr2TwoDim = arr1;
towDim1.NumRow = 30;
towDim1.NumCol = 90;
towDim2.ptr2TwoDim = arr2;
towDim2.NumRow = 20;
towDim2.NumCol = 10;
Наконец при доступе к элемент Я буду использовать:
towDim1[curr_row*NumCol + curr_col]
Мой вопрос: будет ли это всегда работать.
C и C++ - это языки [row-major order] (http://en.wikipedia.org/wiki/Row_major), поэтому, пока вы держитесь за это, он должен работать. Но я бы не рекомендовал использовать его, поскольку он довольно запутывает. –
@JoachimPileborg, спасибо. Не могли бы вы предоставить ссылку на это? – Subway