5.3 多維數(shù)組
C語言允許有大于二維的數(shù)組,維數(shù)的限制(如果有的話)是由具體編譯程序決定的。多維數(shù)組的一般說明形式為:
Type-specifier name [a][b][c]...[z];
由于大量占有內(nèi)存的關(guān)系,二維或更多維數(shù)組較少使用。如前所述,當(dāng)數(shù)組定義之后,所有的數(shù)組元素都將分配到地址空間。例如,大小為( 10,6,9,4)的四維字符數(shù)組需要10×6×9×4即2160字節(jié)。
如果上面的數(shù)組是兩字節(jié)整型的,則需要4320字節(jié),若該數(shù)組是雙字型的(假定每個(gè)雙字為8字節(jié))則需要34560字節(jié),存儲(chǔ)量隨著維數(shù)的增加呈指數(shù)增長。
關(guān)于多維數(shù)組,需要注意一點(diǎn):計(jì)算機(jī)要花大量時(shí)間計(jì)算數(shù)組下標(biāo),這意味著存取多維數(shù)組中的元素要比存取一維數(shù)組的元素花更多的時(shí)間。由于這些和其它原因,大量的多維數(shù)組一般采用C語言動(dòng)態(tài)分配函數(shù)及指針的方法,每次對(duì)數(shù)組的一部分動(dòng)態(tài)地分配存儲(chǔ)空間。
多維數(shù)組傳遞給函數(shù)時(shí),除第一維外,其它各維都必須說明。例如,將數(shù)組m定義成:
int m[4][3][6][5];
那么接收m的函數(shù)應(yīng)寫成:
func1 (d)
int d[][3][6][5];
當(dāng)然,如果愿意,也可加上第一維的說明。
C語言允許有大于二維的數(shù)組,維數(shù)的限制(如果有的話)是由具體編譯程序決定的。多維數(shù)組的一般說明形式為:
Type-specifier name [a][b][c]...[z];
由于大量占有內(nèi)存的關(guān)系,二維或更多維數(shù)組較少使用。如前所述,當(dāng)數(shù)組定義之后,所有的數(shù)組元素都將分配到地址空間。例如,大小為( 10,6,9,4)的四維字符數(shù)組需要10×6×9×4即2160字節(jié)。
如果上面的數(shù)組是兩字節(jié)整型的,則需要4320字節(jié),若該數(shù)組是雙字型的(假定每個(gè)雙字為8字節(jié))則需要34560字節(jié),存儲(chǔ)量隨著維數(shù)的增加呈指數(shù)增長。
關(guān)于多維數(shù)組,需要注意一點(diǎn):計(jì)算機(jī)要花大量時(shí)間計(jì)算數(shù)組下標(biāo),這意味著存取多維數(shù)組中的元素要比存取一維數(shù)組的元素花更多的時(shí)間。由于這些和其它原因,大量的多維數(shù)組一般采用C語言動(dòng)態(tài)分配函數(shù)及指針的方法,每次對(duì)數(shù)組的一部分動(dòng)態(tài)地分配存儲(chǔ)空間。
多維數(shù)組傳遞給函數(shù)時(shí),除第一維外,其它各維都必須說明。例如,將數(shù)組m定義成:
int m[4][3][6][5];
那么接收m的函數(shù)應(yīng)寫成:
func1 (d)
int d[][3][6][5];
當(dāng)然,如果愿意,也可加上第一維的說明。

