我觉得列表和数组从索引0开始有很好的理由。
我认为让它们从L[1],...,L[length(L)]
开始从1开始是更自然的。
有些语言使用1而不是0,例如Matlab,但它们很少。
任何人都有理由在列表中从零开始索引吗?
PD:我已经读过C中的Dijkstra参数和指针参数,它们用指针来讨论内存偏移。我发现它们并不令人信服。
答案 0 :(得分:1)
在编程的早期阶段,面向内存和程序员的大部分内容都要经受地址的影响。引入基于1的索引可能会为处理系统编程的程序的地址计算造成另一个破坏(计算开销)。它将数组和指针保持为彼此的类似表示是一个非常好的理由。
答案 1 :(得分:0)
对于后期数组集合使用基于0的索引本身并不是必要的,但是有两个索引系统是令人讨厌的(我认为VB6集合与数组相比),使用单个索引系统可以更方便一致地处理原始和复杂的集合类型(或者甚至一般地取决于所讨论的语言)。因此,根据类型选择性地使用基于1和0的索引,最多也没有任何好处,并且至少使用基于0的索引有一些好处,我猜这就是它持续存在的原因。