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