2012-10-07 114 views
2

我不觉得列表和阵列从索引0开始有很好的理由。 我认为让它们从1开始更自然,如L[1],...,L[length(L)]。 有些语言使用1而不是0,如Matlab,但它们很少。为什么应该从0开始而不是从1开始?

任何人都有从零开始列表中的索引的原因?

PD:我已经读过C中的Dijkstra参数和指针参数,用指针讨论了内存偏移量。我不觉得他们很有说服力。

+2

这看起来没有建设性。你似乎不是在寻找一个问题,而是寻找一个机会来试图说服受访者他们错了,你是对的。 –

+0

请参阅[为什么零基数组是常态?](http://programmers.stackexchange.com/questions/110804/why-are-zero-based-arrays-the-norm) –

+0

@亨宁马克霍姆这是主观的。 IMO语言设计选择具有建设性,因为它们可能提供一些有价值的见解。 –

回答

1

在编程的大部分时间里,面向内存和程序员不得不忍受地址的困扰。引入基于1的索引可能会为处理系统编程的程序的地址计算造成另一次浩劫(计算开销)。将数组和指针保持为彼此的类似表示是一个非常好的理由。

0

这可能是一个公平的观察结果,使用基于0的索引为后置数组收集本身并不是必要的,但有两个索引系统是一个讨厌(我想VB6集合vs数组)更进一步使用单个索引系统有助于一致地处理原始和复杂的集合类型(或者一般依赖于所讨论的语言)。因此,考虑到根据类型选择使用基于1和0的索引是没有好处的,并且至少有一些好处,那就是使用基于0的索引,我猜这就是为什么它一直存在。

相关问题