Нулевой индекс вполне допустим, если вы думаете, что индекс фактически является смещением от базового адреса массива. На самом деле это норма, хотя она варьируется от диалекта к диалекту. Со старым языком Jovial [0]фактически содержался максимальный размер массива. так началось с [1].
В некоторых базовых реализациях вы можете произвольно выбрать один 0или 1первый индекс. И по крайней мере один Basic позволяет назначить массивы индекса Фрон [n]к [m]. где nи mможет иметь любое целочисленное значение, даже отрицательное, если nоно меньше или равно m. Значение nих становится вычитаемым из [index]введенного, как index-n = 0будто индекс соответствует n.
Но вы можете сделать то же самое и многое другое в своем собственном коде. Вы можете даже изменить порядок массива следующим образом:
dim array(0, abs(m-n));
step=sign(m-n);
if n > m then
base=m
else
base=n;
fi
Этот пример кода на самом деле только частично из одного языка. Я просто хотел, чтобы это было более читабельным. Переменная step используется для управления видимым направлением движения в положительном или отрицательном направлении и используется для расчета эффективного индекса при входе или выходе из массива, который фактически всегда является положительным [0].
${array[@]}в двойные кавычки. В противном случае будет выполнено разделение слов, и вы получите нежелательные результаты, например, при вводеarray=("item 1" "item 2" "item 3").