數組的下標為什么從0開始而不是從1開始


數組是一段連續的空間,要求a[i]就是求它的地址,然后找到它。
在這里插入圖片描述

如果從0開始,則a[i]的地址= 首地址 + i*每個數據所占的長度;
如果從1開始,則a[i]的地址= 首地址 + (i-1)*每個數據所占的長度。
是不是前一種更好計算呢。

再舉個例子:
1、數組在內存中申請是,所申請的內存是一段連續的內存地址;
2、例:int[] a=new int[3];申請一段:int 數據類型的數組,a 為變量,數組長度為:[3];
3、這個數組所申請的內存地址是連續的
(假設所申請的:第一個內存地址為:1008,第二個為:1009,第三個為:1010);
但我們只知道:一、變量:a,它只拿到第一個內存地址1008;二、它的數組空間為3個;
4、a[0]——把a拿到的內存地址:1008 + 0 = 1008 (指向第一個內存地址);
a[1]——把a拿到的內存地址:1008 + 1 = 1009 (指向第二個內存地址);
a[2]——把a拿到的內存地址:1008 + 2 = 1010 (指向第三個內存地址);
所以:數據下標從 [0] 開始的意義也在於此!(當然,這是理解版的)。
(備注):如果你寫a[3],它就報錯了,越界錯誤,因為你只申請了3個內存空間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM