Представление основного порядка столбца против основного порядка строки
Рассмотрим двумерный массив "Массив", который содержит значения: {1,2,3,4,5,6,7,8,9}. Моя основная проблема с пониманием обоих порядков заключается в том, что если порядок строк должен быть представлен в виде массива [i, j] (тогда как i - строка, а j - столбец),
[i0,j0][i0,j1][i0,j2]
[i1,j0][i1,j1][i1,j2]
[i2,j0][i2,j1][i2,j2]
Так что если вам задают вопрос типа "найти адрес элемента Array[1,2] в Array[2][2]", вы будете знать, что число строк предшествует количеству столбцов, и это было бы легко поместить их в формулу:
Base(Address) + w(dataSize){N(i - Row_lowerBound)+(j - Col_lowerBound)}
While 'N' is the number of columns
Означает ли это, что порядок столбцов может быть представлен как Array[j,i], что будет означать, что номер столбца появляется раньше, чем номер строки. Таким образом, нет никакого способа узнать, где значения i,j,Row_lowerbound и Col_lowerbound для Array[j][i] (например, Array[3][4]) должны быть помещены в формулу.
например, если вопрос выглядит так: "Найти адрес массива [1][2] в массиве Array[3][4]". Как бы вы узнали, если 3 - это число столбцов или 4? Как бы вы узнали, является ли "я" 3 или 4?
1 ответ
Ты не можешь знать. Нет никакой связи между тем, как компьютер представляет данные, и тем, как вы их интерпретируете. Поскольку вы "свободны" интерпретировать его так, как вам нравится, то ваша ответственность - знать, какой индекс для строк, а какой для столбцов.
Обычно вы можете написать спецификацию в комментариях в самом коде или написать документацию для функций, использующих структуру. Кроме того, вы можете написать функции для доступа к массиву, которые обеспечивают порядок индексов. Но тогда, это все еще не сразу однозначно, но имеет то преимущество, что вы можете проверить его на предмет отсутствия доступа.