認(rèn)識數(shù)據(jù)結(jié)構(gòu)之【數(shù)組】
須彌零一
認(rèn)識數(shù)據(jù)結(jié)構(gòu)之【數(shù)組】今天來簡單說說數(shù)組,錯過往期文章的朋友可以點(diǎn)擊下面列表的鏈接查閱。
在C語言等絕大部分語言中是允許構(gòu)造多維數(shù)組的。多維數(shù)組元素有多個下標(biāo), 以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。您可以參考上面二維數(shù)組的結(jié)構(gòu)圖嘗試著畫一下三維數(shù)組的內(nèi)存結(jié)構(gòu),當(dāng)你理解了如何從二維數(shù)組到三位數(shù)組,那你也就完全理解了多維數(shù)組。此處作者就偷個懶,不繪制三位數(shù)組的內(nèi)存結(jié)構(gòu)了。
認(rèn)識數(shù)據(jù)結(jié)構(gòu)之【數(shù)組】今天來簡單說說數(shù)組,錯過往期文章的朋友可以點(diǎn)擊下面列表的鏈接查閱。
認(rèn)識數(shù)據(jù)結(jié)構(gòu)系列往期文章:
?認(rèn)識數(shù)據(jù)結(jié)構(gòu)之【樹】
數(shù)組
數(shù)組的定義
數(shù)組(Array)是有序的元素序列。將有限個類型相同的變量集合命名,這個名稱就叫做數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量。用于區(qū)分?jǐn)?shù)組的各個元素的數(shù)字編號稱為下標(biāo)。數(shù)組是在程序設(shè)計中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式。這些有序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。
數(shù)組的特點(diǎn)
1.數(shù)組是相同數(shù)據(jù)類型的元素的集合。2.數(shù)組中的各元素的存儲是有先后順序的,它們在內(nèi)存中按照這個先后順序連續(xù)存放在一起。3.數(shù)組元素用整個數(shù)組的名字和它自己在數(shù)組中的順序位置來表示。例如,a[0]表示名字為a的數(shù)組中的第一個元素,a[1]代表數(shù)組a的第二個元素,以此類推。

二維數(shù)組
前面介紹的數(shù)組只有一個下標(biāo),稱為一維數(shù)組, 其數(shù)組元素也稱為單下標(biāo)變量。在實際問題中有很多量是二維的或多維的。二維數(shù)組在概念上是二維的,即是說其下標(biāo)在兩個方向上變化, 下標(biāo)變量在數(shù)組中的位置也處于一個平面之中, 而不是象一維數(shù)組只是一個向量。但是,實際的硬件存儲器卻是連續(xù)編址的, 也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數(shù)組,可有兩種方式:一種是按行排列, 即放完一行之后順次放入第二行。另一種是按列排列, 即放完一列之后再順次放入第二列。
三位數(shù)組&多維數(shù)組
三維數(shù)組,是指維數(shù)為三的數(shù)組結(jié)構(gòu)。三維數(shù)組是最常見的多維數(shù)組,由于其可以用來描述三維空間中的位置或狀態(tài)而被廣泛使用。 三維數(shù)組就是維度為三的數(shù)組,可以認(rèn)為它表示對該數(shù)組存儲的內(nèi)容使用了三個獨(dú)立參量去描述,但更多的是認(rèn)為該數(shù)組的下標(biāo)是由三個不同的參量組成的。在C語言等絕大部分語言中是允許構(gòu)造多維數(shù)組的。多維數(shù)組元素有多個下標(biāo), 以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。您可以參考上面二維數(shù)組的結(jié)構(gòu)圖嘗試著畫一下三維數(shù)組的內(nèi)存結(jié)構(gòu),當(dāng)你理解了如何從二維數(shù)組到三位數(shù)組,那你也就完全理解了多維數(shù)組。此處作者就偷個懶,不繪制三位數(shù)組的內(nèi)存結(jié)構(gòu)了。
字符數(shù)組
用來存放字符量的數(shù)組稱為字符數(shù)組,即數(shù)組的每個元素為一個字符類型的元素。在C、Java等大部分語言中,字符串都是使用字符數(shù)組來表示的。比如在C語言中用以下三種任意一種方式為字符變量name賦值:雖然分別使用char name[]={'j','e','r','e','m','y'};char name[]={"jeremy"};char name[]="jeremy";
printf(name)打印上面三個name顯示的結(jié)果都是jeremy。但實際上,上面的三個name數(shù)組的長度是不一樣的,這是因為使用字符串賦值的方式,會有一個看不見的字符\0在末尾的位置。比如字符串jeremy?在內(nèi)存中的樣子是下面這樣的:
toCharArray()方法是不會多出來這個\0結(jié)束符的。這是因為Java String的toCharArray()方法,本來就是在復(fù)制的時候沒有復(fù)制那個\0字符,源碼如下:publicchar[] toCharArray(){// Cannot use Arrays.copyOf because of class initialization order issueschar result[]=newchar[value.length];System.arraycopy(value,0, result,0, value.length);return result;}
最后
本篇文章主要介紹了數(shù)組的一些簡單知識,明確了數(shù)組是一組同種類型的數(shù)據(jù)集合,并且是在內(nèi)存結(jié)構(gòu)上連續(xù)的數(shù)據(jù)結(jié)構(gòu)。下期文章將介紹鏈表這種數(shù)據(jù)結(jié)構(gòu),它是在邏輯上聯(lián)系的,和數(shù)組有一些相似的地方。此處就不多說下,大家下期見~(●ˇ?ˇ●)歡迎關(guān)注我的公眾號“須彌零一”,原創(chuàng)技術(shù)文章第一時間推送。
評論
圖片
表情
