什麼是提到數組[0]首先得到arrarys
中的值。 爲什麼我們不使用arrary [1]來獲得第一個值。 如果我們使用arrary [1]意味着程序員容易,但爲什麼我們使用array [0]提到array [0]獲得第一個值的原因是什麼?
回答
使用0作爲第一個數組索引的約定可以追溯到C.在C中,數組作爲一個概念非常緊密地耦合到底層的內存模型 - 數組實際上是一系列內存中的值,從分配的地址開始。爲了從這個數組中獲得一個地址,你可以將它的值作爲一個指針,增加一個指針值並查看那個地方的內存。在取消引用前給這個'指針'加0就給了你數組中的第一項 - 所以自然先使用0,否則每次分配一個數組時你必須在每次訪問之前減1 2)每次分配浪費整個項目空間。它還具有第三個優點 - 如果數組中有256個條目,則可以用一個字節(僅保存0到255)對其進行索引,但如果數組從1開始,則256不是一個字節的有效值,所以你不得不使用一個簡短的。
繼承C語言的語法,如Java和C#和Javascript,因此C的思維模型也使用0索引數組 - 出於同樣的原因 - 一致性是一個強大的功能。
一些語言,比如Lua,其目標是「直觀易懂」,並且從1開始,相反。
如果你不動態創建指針,你不必做任何一個。在編譯時'a'的值可以是'&a [-1]'。但是當你解除引用指針時,你只需要增加。 – Elazar 2013-05-09 05:53:40
用什麼編程語言?有編程語言,其中數組索引爲1.有編程語言,其中數組從0索引。有編程語言,其中數組是從任何用戶定義的值進行索引的。
在較低級別的語言中,您可能會在起始索引處看到0
,原因很簡單,因爲在硬件級別,數組的第一個元素位於內存中整個數組開頭的字節偏移量0
處。這爲計算各種陣列元素的字節偏移提供了一個非常簡單而有效的公式。例如。對於數組的第i個元素,字節偏移量爲i * element_size
。這種簡單的計算(例如乘以編譯時常量)可以通過給定硬件上的單個機器指令來實現,這使得陣列訪問特別有效。
- 1. 是什麼原因
- 2. 爲什麼&array!=&array [0]?
- 3. BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE的原因是什麼?
- 4. RejctedExecutionException的原因是什麼?
- 5. 這個nullPointerException的原因是什麼?
- 6. ChangeConflictException的原因是什麼?
- 7. 彈出窗口第一次打開的原因是什麼
- 8. 'System.IO.IsolatedStorage.IsolatedStorageException'的原因是什麼?
- 9. 什麼是UnsatisfiedLinkError的原因?
- 10. UnsupportedClassVersionError的原因是什麼?
- 11. 這個NoMethodError的原因是什麼?
- 12. 這個輸出的原因是什麼?
- 13. 這個錯誤的原因是什麼?
- 14. 獲取退出狀態值的原因是什麼-1
- 15. 爲什麼我得到for循環的array [i]值是undefined
- 16. PlatformID.MacOSX是什麼原因?
- 17. java.lang.reflect.InvocationTargetException:這是什麼原因?
- 18. 使用這種語法的原因是什麼(0,_.Em)();
- 19. (void)sizeof(0 [array])是什麼意思?
- 20. 在Python中,「覆蓋」默認參數0的原因是什麼?
- 21. 日期值延遲一天的原因是什麼?
- 22. Neo4j:標籤背後第一個字母大寫的原因是什麼?
- 23. Array獲得第二項
- 24. Array.prototype.slice.call(array,0)有什麼用?
- 25. 什麼是WidgetProvider的appWidgetIds []?爲什麼總是得到它的價值0?
- 26. 如何獲得數組對象的第0個索引鍵值
- 27. 導致此ArrayIndexOutOfBoundsException的原因是什麼?
- 28. 嵌套類的原因是什麼
- 29. 一些objc_release崩潰。什麼可能是一個原因?
- 30. fsockopen()錯誤的原因是什麼?
這裏是你的答案:http://en.wikipedia.org/wiki/Zero-based_numbering#Advantages – DhruvPathak 2013-05-09 05:46:14
數組索引從0開始,因此訪問需要使用索引的第N個元素N-1 – verisimilitude 2013-05-09 05:46:24
http ://programmers.stackexchange.com/questions/110804/why-are-zero-based-arrays-the-norm – 2013-05-09 05:47:25