国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

很少人知道!很多編程語言中,為什么數(shù)組都從 0 開始編號的?

2021-04-16 14:48 作者:C語言編程__Plus  | 我要投稿

數(shù)組:為什么很多編程語言中數(shù)組都從0開始編號?


從數(shù)組存儲的內(nèi)存模型上看,"下標(biāo)"最確切的定義應(yīng)該是"偏移"。前面也講到,如果用a來表示數(shù)組的首地址,a[0]就是偏移為0的位置,也就是首地址,a[k]就表示偏移k個type_size的位置,所以計算a[k]的內(nèi)存地址只需要用這個公式:

a[k]_address = base_address + k * type_size

但是,如果數(shù)組從1開始計數(shù),那我們計算數(shù)組元素a[k]的內(nèi)存地址就會變?yōu)?

a[k]_address = base_address + (k-1)*type_size


對比兩個公式,我們不難發(fā)現(xiàn),從1開始編號,每次隨機(jī)訪問數(shù)組元素都多了一次減法運算,對于CPU來說就多了一次減法指令?數(shù)組作為非?;A(chǔ)的數(shù)據(jù)結(jié)構(gòu),通過下標(biāo)隨機(jī)訪問數(shù)組元素又是其非?;A(chǔ)的編程操作,效率的優(yōu)化就要盡可能做到極致。所以為了減少一次減法操作,數(shù)組選擇了從0開始編號,而不是從1開始

不過,我認(rèn)為上面解釋得再多都算不上壓倒性的證明,說數(shù)組起始編號非 0 開始不可。所以我覺得最主要的原因可能是歷史原因。


C 語言設(shè)計者用 0 開始計數(shù)數(shù)組下標(biāo),之后的 Java、JavaScript 等高級語言都效仿了 C 語言,或者說,為了在一定程度上減少 C 語言程序員學(xué)習(xí) Java 的學(xué)習(xí)成本,因此繼續(xù)沿用了從 0 開始計數(shù)的習(xí)慣。實際上,很多語言中數(shù)組也并不是從 0 開始計數(shù)的,比如 Matlab。甚至還有一些語言支持負(fù)數(shù)下標(biāo),比如 Python。

有句話是這么說的:栽一棵樹最好的時間是十年前,其次是現(xiàn)在。對于學(xué)習(xí)編程或者正在工作的朋友,如果你想更好的提升你的編程能力乃至轉(zhuǎn)行,彎道超車,快人一步!筆者這里或許可以幫到你~

微信公眾號:C語言編程學(xué)習(xí)基地

分享(源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!



很少人知道!很多編程語言中,為什么數(shù)組都從 0 開始編號的?的評論 (共 條)

分享到微博請遵守國家法律
曲阜市| 阳城县| 娄底市| 晋城| 福安市| 萝北县| 廊坊市| 泾川县| 南投县| 磐石市| 隆回县| 隆安县| 吉林市| 灵川县| 科尔| 荆门市| 四子王旗| 洛隆县| 辉南县| 巴中市| 万安县| 疏附县| 龙岩市| 刚察县| 六安市| 织金县| 台安县| 谷城县| 米林县| 邵阳县| 溆浦县| 罗田县| 普定县| 廊坊市| 新竹市| 阿巴嘎旗| 读书| 克什克腾旗| 花垣县| 彭山县| 兴仁县|