rapture
10.06.2011 00:43 unknown
чего не могу толком понять — вот почему в половине языков индексы массивов начинаются с 0, но функции длины возвращают нормальные значения. Т.е. по моей быдлологике — номер последнего элемента = длине массива(по порядку расчитайсь — Иванов 24, всего 24 человека. А не Иванов 23й, всего 24 человека).

15 comments
recommend
bookmark
subscribe
Исдекс массива — это по сути смещение от начала. У первого оно, сессно, ноль. Ну и так далее. А длина — она и в Африке длина.
*индекс элемента, разумеется.
> У первого оно, сессно, ноль.
А ну-ка, ну-ка? Почему естесственно? Мне естесственней сказать что Иванов 24ый, а не 23ий, разве не так?
Тебе — да. А железке естественней отсчитать 23 шага вот от этого столба.
Ты мне объясни, почему машине удобнее отсчитать 23 шага начиная с 0, а не с 1 :D
Она не от 0 считает, а от столба:-) А 0, 1 и т.д. — это количество шагов.
Столб в данном случае — адрес начала массива.
интересно, как тогда функциональщину развивать, если архитектура такая :)
Т.е., если упростить, то адрес нужного элемента — это адрес начала + индекс. Для первого элемента они совпадают.
Иными словами, если бы массив начинался с 1, то 0 было бы в другой ячейке памяти. Это понятно, но какое-то интуитивное чувство, что тебя наебывают, остается.
Ну напиши язык, в котором индексы будут начинаться с единицы:-)
Сядь за Delphi или VBA, там массивы с 1 начинаются, и не еби нам мозг.
Да, VBA был создан специально для меня :)
Там и там придется еденичку вычитать из cmp :)
Всё нормально же.