C語(yǔ)言的數(shù)組為什么要從0開始編號(hào)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
微信公眾號(hào):morixinguan
關(guān)注可了解更多的教程。問題或建議,請(qǐng)公眾號(hào)留言;
如果你覺得本文對(duì)你有幫助,歡迎贊賞
在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之美中看到一個(gè)知識(shí)點(diǎn)挺有趣,雖然不是作者壓倒性的實(shí)驗(yàn)證明,但分析起來也是有道理的,我們來看看是怎么回事:
假設(shè)又有a[i]和b[i]兩個(gè)int類型的數(shù)組,如果按計(jì)算偏移地址來獲取數(shù)據(jù),a表示數(shù)組的首地址,如果數(shù)組從0開始計(jì)數(shù),則a[0]就是偏移為0的位置,a[i]表示偏移i個(gè)數(shù)據(jù)類型大小的位置。則a[i]滿足以下計(jì)算公式:
1a[i] = 基地址 + i * 數(shù)據(jù)類型
如果數(shù)組從1開始計(jì)數(shù),則滿足以下公式:
1b[i] = 基地址+(i-1)*數(shù)據(jù)類型
很顯然,從1開始計(jì)數(shù)編號(hào),每次隨機(jī)訪問數(shù)組元素都多了一次減法運(yùn)算,對(duì)于CPU來說,即是多了一條SUB指令,顯然從0開始計(jì)算要高效一些。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!