以前一直以為二維數(shù)組是一個(gè)存儲(chǔ)一維數(shù)組的數(shù)組 每個(gè)元素都是子數(shù)組的頭指針
但是看了一篇文章 似乎是說并沒有這回事 a [3] [4]只是連續(xù)的12個(gè)空間 a是第一個(gè)空間的頭地址 a[0]是第一個(gè)一維數(shù)組的頭地址 也是第一個(gè)空間的地址 a[1]是第二個(gè)數(shù)組的頭地址 實(shí)際上是第5個(gè)空間的地址 多維數(shù)組只是把一個(gè)一維數(shù)組劃分成了很多小塊?
怎么理解才是對(duì)的呢?
補(bǔ)一個(gè) a[3][4]
的內(nèi)存分布
a = [3][4]
/* 內(nèi)存中 */
a[0] <-> [b[0], b[1], b[2], b[3]],
a[1] <-> [c[0], c[1], c[2], c[3]],
a[2] <-> [d[0], d[1], d[2], d[3]];
/* a 中元素指向的地址 */
a[00] -> b[0]
a[01] -> c[0]
a[02] -> d[0]
a[03] -> b[1]
a[04] -> b[2]
a[05] -> b[3]
a[06] -> c[1]
a[07] -> c[2]
a[08] -> c[3]
a[09] -> d[1]
a[10] -> d[2]
a[11] -> d[3]
...
所以 a[1]
指向的是 c[0]
(指向地址),而 c[0]
實(shí)質(zhì)上在整個(gè) a的內(nèi)存 中排第五位(內(nèi)存分布)
連續(xù) 說的是內(nèi)存中的分布
其實(shí)看內(nèi)存圖解的時(shí)候我也有點(diǎn)暈,做了一些思考后有如下猜測(cè):
一個(gè)二維數(shù)組,前幾個(gè)元素是記錄了幾個(gè)內(nèi)部一維數(shù)組的頭地址在整個(gè)外部一維數(shù)組中的偏移位置。
也就是說
a = [2][2]
/* 內(nèi)存中 */
a[0] -> b[0]
a[1] -> c[0]
a[2] -> b[0]
a[3] -> c[1]
...
因?yàn)閿?shù)組長(zhǎng)度是不可變的,一旦編譯,內(nèi)存地址直接分配,只要知道子數(shù)組的首地址,可以直接根據(jù)偏移快速定位:
a[n][m] -> a[n] + m
a[1][1] -> a[1] + 1 -> c[0] + 1 -> c[1]
對(duì)于多維數(shù)組的話:
a = [2][2][2]
/* 內(nèi)存中 */
a[0] -> b(0)[0] -> c[0]
a[1] -> b(1)[0] -> d[0]
a[2] -> b(0)[1] -> e[0]
a[3] -> b(1)[1] -> f[0]
a[4] -> c[1]
a[5] -> d[1]
a[6] -> e[1]
a[7] -> f[1]
...
a[x][y][z] -> a[x][y] + z -> (a[x] + y) + z
a[0][1][0] -> a[0][1] + 0 -> (a[0] + 1) + 0 -> c[0] + 1 -> c[1]
注: 對(duì)于 a[0] + 1
是說把 a[0] 指向的地址(也就是 c[0] )下移一次,不是代數(shù)運(yùn)算
如果有說錯(cuò)的還請(qǐng)大家斧正!
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。