(1)已知第二維
(2)已知第一維
(3)已知第一維,一次分配內(nèi)存(保證內(nèi)存的連續(xù)性)
(4)兩維都未知
(5)兩維都未知,一次分配內(nèi)存(保證內(nèi)存的連續(xù)性)
2.C++動態(tài)分配二維數(shù)組
(1)已知第二維
(2)已知第一維
(3)已知第一維,一次分配內(nèi)存(保證內(nèi)存的連續(xù)性)
(4)兩維都未知
(5)兩維都未知,一次分配內(nèi)存(保證內(nèi)存的連續(xù)性)
多說一句:new和delete要注意配對使用,即有多少個new就有多少個delete,這樣才可以避免內(nèi)存泄漏!
3.靜態(tài)二維數(shù)組作為函數(shù)參數(shù)傳遞
如果采用上述幾種方法動態(tài)分配二維數(shù)組,那么將對應(yīng)的數(shù)據(jù)類型作為函數(shù)參數(shù)就可以了。這里討論靜態(tài)二維數(shù)組作為函數(shù)參數(shù)傳遞,即按照以下的調(diào)用方式:
int a[2][3];
func(a);
C語言中將靜態(tài)二維數(shù)組作為參數(shù)傳遞比較麻煩,一般需要指明第二維的長度,如果不給定第二維長度,則只能先將其作為一維指針傳遞,然后利用二維數(shù)組的線性存儲特性,在函數(shù)體內(nèi)轉(zhuǎn)化為對指定元素的訪問。
首先寫好測試代碼,以驗(yàn)證參數(shù)傳遞的正確性:
(1)給定第二維長度
(2)不給定第二維長度
注意:使用該函數(shù)時需要將二維數(shù)組首地址強(qiáng)制轉(zhuǎn)換為一維指針,即func((int*)a);