无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

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

分享到微博請遵守國家法律
宁津县| 孟津县| 徐州市| 通许县| 宜州市| 蓬溪县| 阜宁县| 简阳市| 浦县| 台前县| 岳阳市| 来凤县| 安远县| 龙游县| 鹤岗市| 廊坊市| 孝义市| 敦煌市| 茶陵县| 丰原市| 同心县| 汉源县| 托克托县| 屯门区| 巴南区| 张家港市| 鲜城| 石首市| 唐海县| 盐边县| 北川| 安塞县| 沙坪坝区| 寿宁县| 潍坊市| 沧州市| 教育| 广水市| 伊吾县| 正镶白旗| 镇安县|