五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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 開始編號的?的評論 (共 條)

分享到微博請遵守國家法律
云南省| 和林格尔县| 郑州市| 封丘县| 彭泽县| 乌海市| 万荣县| 融水| 思茅市| 天台县| 太湖县| 亳州市| 安新县| 宁强县| 安岳县| 浦江县| 轮台县| 西吉县| 新余市| 石林| 平度市| 马公市| 武城县| 盐池县| 容城县| 青冈县| 望谟县| 杭锦后旗| 定安县| 柏乡县| 开平市| 扎赉特旗| 县级市| 霞浦县| 莱西市| 东乡县| 贞丰县| 开江县| 庄浪县| 清苑县| 通渭县|