5.2.1 二維數(shù)組的一般形式
C語言允許使用多維數(shù)組,最簡單的多維數(shù)組是二維數(shù)組。實(shí)際上,二維數(shù)組是以一維數(shù)組為元素構(gòu)成的數(shù)組,要將d說明成大小為(1 0,2 0)的二維整型數(shù)組,可以寫成:
int d[10][20]
請留心上面的說明語句, C不像其它大多數(shù)計(jì)算機(jī)語言那樣使用逗號區(qū)分下標(biāo),而是用方
括號將各維下標(biāo)括起,并且,數(shù)組的二維下標(biāo)均從0計(jì)算。
與此相似,要存取數(shù)組d中下標(biāo)為( 3,5)的元素可以寫成:
d [ 3 ] [ 5 ]
在例5 - 3中,整數(shù)1到1 2被裝入一個(gè)二維數(shù)組。
[例5 - 3 ]
main ( )
{
int t,i,n u m [ 3 ] [ 4 ]
for (t=0; t<3; t)
for (i=0;i<4; i)
n u m [ t ] [ i ] = ( t * 4 ) i 1 ;
}
在此例中, n u m [ 0 ] [ 0 ]的值為1,n u m [ 0 ] [ 2 ]的值為3, . . . . . .,n u m [ 2 ] [ 3 ]的值為1 2。可以將該數(shù)組想象為如下表格:
二維數(shù)組以行—列矩陣的形式存儲(chǔ)。第一個(gè)下標(biāo)代表行,第二個(gè)下標(biāo)代表列,這意味著按照在內(nèi)存中的實(shí)際存儲(chǔ)順序訪問數(shù)組元素時(shí),右邊的下標(biāo)比左邊的下標(biāo)的變化快一些。
5 - 2是一個(gè)二維數(shù)組在內(nèi)存中的情形,實(shí)際上,第一下標(biāo)可以認(rèn)為是行的指針。
記住,一旦數(shù)組被證明,所有的數(shù)組元素都將分配相應(yīng)的存儲(chǔ)空間。對于二維數(shù)組可用下列公式計(jì)算所需的內(nèi)存字節(jié)數(shù):
行數(shù)×列數(shù)×類型字節(jié)數(shù)=總字節(jié)數(shù)因而,假定為雙字節(jié)整型,大小為( 1 0,5)的整型數(shù)組將需要:1 0×5×2=100 字節(jié)
當(dāng)二維數(shù)組用作函數(shù)的參數(shù)時(shí),實(shí)際上傳遞的是第一個(gè)元素(如[ 0 ] [ 0 ])的指針。不過該函數(shù)至少得定義第二維的長度,這是因?yàn)镃編譯程序若要使得對數(shù)組的檢索正確無誤,就需要知道每一行的長度。例如,將要接收大小為( 1 0,1 0)的二維數(shù)組的函數(shù),可以說明如下:
func1 (x)
int x[ ][10]
{
.
.
.
}
第一維的長度也可指明,但沒有必要。
C編譯程序?qū)瘮?shù)中的如下語句:
X [ 2 ] [ 4 ]
處理時(shí),需要知道二維的長度。若行長度沒定義,那么它就不可能知道第三行從哪兒開始。
C語言允許使用多維數(shù)組,最簡單的多維數(shù)組是二維數(shù)組。實(shí)際上,二維數(shù)組是以一維數(shù)組為元素構(gòu)成的數(shù)組,要將d說明成大小為(1 0,2 0)的二維整型數(shù)組,可以寫成:
int d[10][20]
請留心上面的說明語句, C不像其它大多數(shù)計(jì)算機(jī)語言那樣使用逗號區(qū)分下標(biāo),而是用方
括號將各維下標(biāo)括起,并且,數(shù)組的二維下標(biāo)均從0計(jì)算。
與此相似,要存取數(shù)組d中下標(biāo)為( 3,5)的元素可以寫成:
d [ 3 ] [ 5 ]
在例5 - 3中,整數(shù)1到1 2被裝入一個(gè)二維數(shù)組。
[例5 - 3 ]
main ( )
{
int t,i,n u m [ 3 ] [ 4 ]
for (t=0; t<3; t)
for (i=0;i<4; i)
n u m [ t ] [ i ] = ( t * 4 ) i 1 ;
}
在此例中, n u m [ 0 ] [ 0 ]的值為1,n u m [ 0 ] [ 2 ]的值為3, . . . . . .,n u m [ 2 ] [ 3 ]的值為1 2。可以將該數(shù)組想象為如下表格:
二維數(shù)組以行—列矩陣的形式存儲(chǔ)。第一個(gè)下標(biāo)代表行,第二個(gè)下標(biāo)代表列,這意味著按照在內(nèi)存中的實(shí)際存儲(chǔ)順序訪問數(shù)組元素時(shí),右邊的下標(biāo)比左邊的下標(biāo)的變化快一些。
5 - 2是一個(gè)二維數(shù)組在內(nèi)存中的情形,實(shí)際上,第一下標(biāo)可以認(rèn)為是行的指針。
記住,一旦數(shù)組被證明,所有的數(shù)組元素都將分配相應(yīng)的存儲(chǔ)空間。對于二維數(shù)組可用下列公式計(jì)算所需的內(nèi)存字節(jié)數(shù):
行數(shù)×列數(shù)×類型字節(jié)數(shù)=總字節(jié)數(shù)因而,假定為雙字節(jié)整型,大小為( 1 0,5)的整型數(shù)組將需要:1 0×5×2=100 字節(jié)
當(dāng)二維數(shù)組用作函數(shù)的參數(shù)時(shí),實(shí)際上傳遞的是第一個(gè)元素(如[ 0 ] [ 0 ])的指針。不過該函數(shù)至少得定義第二維的長度,這是因?yàn)镃編譯程序若要使得對數(shù)組的檢索正確無誤,就需要知道每一行的長度。例如,將要接收大小為( 1 0,1 0)的二維數(shù)組的函數(shù),可以說明如下:
func1 (x)
int x[ ][10]
{
.
.
.
}
第一維的長度也可指明,但沒有必要。
C編譯程序?qū)瘮?shù)中的如下語句:
X [ 2 ] [ 4 ]
處理時(shí),需要知道二維的長度。若行長度沒定義,那么它就不可能知道第三行從哪兒開始。

