Một chỉ số 0 là hoàn toàn hợp lệ nếu bạn nghĩ rằng chỉ số thực sự là một phần bù từ địa chỉ cơ sở của một mảng. Đó là tiêu chuẩn trong thực tế, mặc dù nó thay đổi từ phương ngữ sang phương ngữ. Với ngôn ngữ Jovial cũ, [0]
thực sự chứa kích thước tối đa của mảng. Vì vậy, nó bắt đầu với [1]
.
Với một số triển khai Cơ bản, bạn có thể tùy ý chọn để có 0
hoặc 1
là chỉ mục đầu tiên. Và ít nhất một Basic cho phép bạn chỉ định các mảng để lập chỉ mục [n]
cho [m]
. trong đó n
và m
có thể có bất kỳ giá trị nguyên nào, thậm chí âm, miễn n
là nhỏ hơn hoặc bằng m
. Giá trị n
chúng bị trừ đi từ [index]
nhập, như index-n = 0
thể chỉ số tương ứng với n
.
Nhưng bạn có thể làm điều tương tự và nhiều hơn nữa trong mã của riêng bạn. Bạn thậm chí có thể đảo ngược thứ tự của một mảng theo cách này:
dim array(0, abs(m-n));
step=sign(m-n);
if n > m then
base=m
else
base=n;
fi
Ví dụ mã này thực sự chỉ là một phần của một ngôn ngữ. Tôi chỉ muốn nó dễ đọc hơn. Biến bước được sử dụng để kiểm soát hướng rõ ràng mà bạn đang di chuyển theo hướng tích cực hay tiêu cực và được sử dụng để tính chỉ số hiệu quả khi đi vào hoặc đi ra khỏi mảng, thực sự luôn luôn dương từ đó [0]
.
${array[@]}
trong dấu ngoặc kép. Nếu không, việc chia từ sẽ được thực hiện và bạn sẽ nhận được kết quả không mong muốn, trên các đầu vào như thế nàoarray=("item 1" "item 2" "item 3")
.