2012-10-07 140 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的索引,我猜這就是爲什麼它一直存在。

相關問題