成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么數(shù)組的下標從 0 開始?

開發(fā)
數(shù)組在計算機內(nèi)存中實現(xiàn)為連續(xù)存儲,首地址對應(yīng)下標 0,具體元素的下標,就可以直接表示為相對首地址的偏移量。

示例代碼

因為現(xiàn)代化的高級編程語言,基本只能使用 array[index] 來操作數(shù)組指定的索引,所以這里使用 C 語言,展示一下更 “原始的方法” 操作數(shù)組的魅力。

#include <stdio.h>

int main(void) {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);

    for (int i = 0; i < n; i++) {
        // *(arr + i) 相當于 arr[i]
        //  (arr + i) 是第 i 個元素的地址
        printf("Element %d: value = %d, address = %p\n",
               i,
               *(arr + i),
               (void *)(arr + i));
    }

    return0;
}

// 你的輸出地址和這里的不一樣,屬于正常現(xiàn)象

Element 0: value = 1, address = 0x16d65adc0
Element 1: value = 2, address = 0x16d65adc4
Element 2: value = 3, address = 0x16d65adc8
Element 3: value = 4, address = 0x16d65adcc
Element 4: value = 5, address = 0x16d65add0

歷史原因

這應(yīng)該是主要原因。

計算機較為早期的編程語言,例如 BCPL, 使用 0 作為數(shù)組開始的下標,然后 C 語言沿襲了這個設(shè)計來簡化編譯過程,再來后來的高級語言 (Java, Python) 等為了兼顧歷史,全部延續(xù)了 C 語言的慣例,所以最終也就變成了一個約定俗成的特性。

性能優(yōu)化

這個優(yōu)化主要體現(xiàn)在計算機內(nèi)存尋址效率上,因為數(shù)組的訪問依賴于內(nèi)存地址的計算,具體來說,如果使用變量 base 來表示數(shù)組的地址:

(1) 當下標從 0 開始時:

  • arr[0] 就表示數(shù)組首個元素的地址
  • arr[k] 就表示從數(shù)組首元素開始,偏移 k 個元素的地址,偏移量為數(shù)據(jù)類型 typeSize 的大小

(2) 但是當下標從 1 開始時:

  • arr[1] 就表示數(shù)組首個元素的地址
  • arr[k] 就表示從數(shù)組首元素開始,偏移 k - 1 個元素的地址,偏移量為數(shù)據(jù)類型 typeSize 的大小為 4

通過對比兩個尋址公式可以看到,如果數(shù)組下標從 1 開始,每次隨機訪問數(shù)組元素時,都會增加 1 個額外的減法運算,也就是多了 1 條 CPU 減法指令,高頻訪問場景下會造成略微的性能差異。

內(nèi)存模型

數(shù)組在計算機內(nèi)存中實現(xiàn)為連續(xù)存儲,首地址對應(yīng)下標 0,具體元素的下標,就可以直接表示為相對首地址的偏移量。這樣,可以和物理內(nèi)存地址從 0 開始編號,保持相同的邏輯抽象語義。

數(shù)學邏輯與半開區(qū)間優(yōu)勢

在數(shù)學中,序列索引常從 0 開始(如離散數(shù)學中的 0 到 n-1 定義)。編程語言中,半開區(qū)間( 例如 Python 的切片 arr[0:n] 表示前 n 個元素)比閉區(qū)間的表示方式更簡潔。如果下標從 1 開始,表示方式就變?yōu)?nbsp;arr[1:n+1],增加不必要的復(fù)雜度。

責任編輯:趙寧寧 來源: 洋芋編程
相關(guān)推薦

2021-07-09 06:48:29

數(shù)組存儲內(nèi)存

2014-02-01 21:25:08

Python數(shù)組

2022-05-24 08:31:05

C語言檢查數(shù)組

2023-11-04 16:26:18

C語言數(shù)組

2020-12-14 08:00:31

計算機計數(shù)程序

2024-02-06 09:55:33

框架代碼

2015-05-29 11:14:31

程序員開始看書

2023-03-29 08:52:58

視覺Vue組件庫

2022-11-26 00:34:57

數(shù)組Java程序

2022-08-31 14:24:03

數(shù)字化轉(zhuǎn)型小程序平臺

2024-06-07 09:13:23

2019-04-22 09:58:25

C語言Web操作系統(tǒng)

2022-08-12 21:40:41

FedoraCC0許可證

2016-11-21 15:22:47

GitHub操作開源

2018-05-23 15:20:08

區(qū)塊鏈數(shù)字貨幣比特幣

2019-01-29 14:29:03

微服務(wù)路由

2013-01-22 09:35:27

Hadoop存儲

2023-03-01 07:37:10

數(shù)組鏈表性能

2011-07-03 18:28:13

網(wǎng)站優(yōu)化

2017-02-07 09:37:46

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲激精日韩激精欧美精品 | 日日日色 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 久久久亚洲| 久草免费在线视频 | 一区二区三区国产 | 日韩欧美一区二区三区免费观看 | 黄色免费av | 亚洲人成网站777色婷婷 | 国产福利精品一区 | 中文字幕日韩欧美 | 久久久久久久久久久高潮一区二区 | 国产精品一区二区久久 | 欧美影院 | 91精品久久久久 | 精品91久久| 中文字幕成人在线 | 91xxx在线观看 | 日本中文字幕在线观看 | 99精品99 | 91精品中文字幕一区二区三区 | 99这里只有精品视频 | 亚洲九色 | 日日日色 | a级大毛片 | 欧美亚洲视频在线观看 | 久久免费精彩视频 | 亚洲精品一区二区 | a黄毛片| 日本一二三区高清 | 欧美精品一区二区在线观看 | 在线观看亚洲欧美 | 婷婷桃色网 | av在线免费播放 | 99精品国产一区二区青青牛奶 | 欧美三级在线 | 喷水毛片 | 天天射色综合 | 久久伊人精品一区二区三区 | 在线成人免费视频 | 精品美女视频在线观看免费软件 |