簡單一句話: 就是為了方便 計算出每個元素的具體內存地址
因為數組變量 實際上在內存上儲存的是這個數組變量中第一個元素的的首地址,而系統在取數組中某個元素的值時,必須要得到具體的那個元素的地址才能獲取到對應的值
具體每個元素的內存地址 = 數組變量首地址 + 下標 X 每個元素占用的字節數
比如:
int a[5]={10,11,12,13,14}
因為 int每個元素占用4個字節,所以 數組中每個相鄰的元素內存地址都相差4,
那么每個元素的地址就等於前一個元素的地址 + 4
a[0] 的內存地址 = a的地址 + 0 * 4 (第一個元素的地址計算結果 跟數組的首地址一樣)
a[1] 的內存地址 = a的地址 + 1 * 4 (下標是1,內存地址就就是首地址 偏移 4字節)
a[2] 的內存地址 = a的地址 + 2 * 4 (下標是2,內存地址就首地址 偏移 8字節)
..........
a[5]的內存地址 = a的地址 + 5 * 4 (下標是5 內存地址就是首地址 偏移 20字節)
如果從1開始 就要減去1,多一步運算,效率自然不讓直接點高
所以數組的索引(下標)從0開始 是為了方便計算每個元素的地址.如果從1開始的話 運算起來沒有從0開始方便
所以 大部分編程語言數組索引都是從0開始