數組是一段連續的空間,要求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個內存空間。