C語言 二維陣列動態分配和釋放
阿新 • • 發佈:2019-02-04
(1)已知第二維
(2)已知第一維
(3)已知第一維,一次分配記憶體(保證記憶體的連續性)
(4)兩維都未知
(5)兩維都未知,一次分配記憶體(保證記憶體的連續性)
2.C++動態分配二維陣列
(1)已知第二維
(2)已知第一維
(3)已知第一維,一次分配記憶體(保證記憶體的連續性)
(4)兩維都未知
(5)兩維都未知,一次分配記憶體(保證記憶體的連續性)
多說一句:new和delete要注意配對使用,即有多少個new就有多少個delete,這樣才可以避免記憶體洩漏!
3.靜態二維陣列作為函式引數傳遞
如果採用上述幾種方法動態分配二維陣列,那麼將對應的資料型別作為函式引數就可以了。這裡討論靜態二維陣列作為函式引數傳遞,即按照以下的呼叫方式:
int a[2][3];
func(a);
C語言中將靜態二維陣列作為引數傳遞比較麻煩,一般需要指明第二維的長度,如果不給定第二維長度,則只能先將其作為一維指標傳遞,然後利用二維陣列的線性儲存特性,在函式體內轉化為對指定元素的訪問。
首先寫好測試程式碼,以驗證引數傳遞的正確性:
(1)給定第二維長度
(2)不給定第二維長度
注意:使用該函式時需要將二維陣列首地址強制轉換為一維指標,即func((int*)a);