為什麼程式語言列表索引從零開始

時間 2021-06-09 14:07:07

1樓:好名真難取

因為陣列最開始是C語言裡的 C語言裡的陣列最後都會被編譯器轉換成指標而訪問陣列的方式就是指標指向的記憶體位址+資料型別大小*偏移量而索引就是偏移量

2樓:

C 語言裡陣列的首位址是 a,第二項位址是 a + 1,之後是 a + n,於是 *(a + n) 就有了乙個語法糖 a[n] 或 n[a],而 a[0] 也就是 *a。

當然這個習慣不是從 C 語言開始的,因為彙編取記憶體的機制和 C 是一樣的,所以所有語言的設計者都更傾向於這麼設計,但也不是說就沒有從 1 開始索引的語言。無所謂啊,習慣了都一樣用。

3樓:

記得見過這個問題的答案,先挖個坑後面來答,如果有人回答了那我就不重讀回答了

找了幾個鏈結可以看一下

Edsger W.Dijkstra 的解釋 Why numbering should start at zero

電腦科學中索引值為什麼從0開始? - 程式園為什麼陣列從0開始 - 程式園

為什麼大多數程式語言中的陣列都從0開始 - 程式園

4樓:知乎一生黑

對使用者而言,索引從零開始,則迴圈終止條件可以寫成小於,不用每次都寫成小於等於,可以少寫乙個字元。對機器而言。索引即是偏移量,第乙個元素偏移量為零,第二個元素偏移量為一(個元素大小)。

如果直接用長度作索引,可以很方便的從原始內容末尾繼續讀寫。

如果是索引從一開始,迴圈遍歷元素,你多寫乙個等號都沒啥大不了的,最終編譯器還是可以幫你處理成從零開始到小於陣列長度終止。如果你通過索引變數隨機訪問元素,編譯器豈不是要人為往回偏移乙個元素大小?

5樓:

因為CPU定址從0開始。

高階語言和指令碼無所謂(但也沒必要特意從1開始不是麼),對於c這種能直接生成機器碼的語言來說,和硬體保持一致是最好的選擇。

至於為什麼CPU定址從0開始。。。比如8位位址,0-255正好256個位址,我看不出刻意從1開始的必要性。

為什麼有些程式語言的陣列要從零開始算?

周娛娛雨御與漁 非要問有什麼優勢的話,我給你分享一點思路。陣列 Array 是一種線性表資料結構,它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。因為陣列的儲存結構是一組連續的記憶體空間,所以陣列具有 快速查詢 的特性,支援隨機訪問。陣列根據首位址和下標,實現對元素記憶體的隨機訪問。定址公式...

乙個沒有任何程式語言基礎的人能否從零開始學習並掌握一門程式語言?

CodeAllen 原則上大家都是0基礎來時學習的,只不過時間不同而已我自己的對於語言的話主要集中在C C Python,之前也總結過一些分享下 Allen李康 C語言推薦書籍從入門到高階 珍藏版 Allen李康 C 推薦書籍從入門到高階帶你走上大牛之路 珍藏版 Allen李康 Python推薦書籍...

兩種語言同時從零開始學起是什麼體驗?

foxgab 我從小就學普通話和家鄉話,因為和普通話分屬於不同的大方言,習慣了就好可以自如切換,並沒有什麼特別的感覺。長大以後來北京,反而發現很多北方人無法自如切換,總是會把方言混進來,比如我認識的幾個天津人,他們堅持認為自己說的濃厚天津味的口音是標準普通話。看到網上有篇研究說,不同的語言在大腦中是...