C++中動態分配多維數組

在C++中,定義數組時,數組的維數必須是常量表達式,定義多維數組也是這個要求。如果需要定義一個由用戶輸入維度的多維數組時,就必須使用動態分配內存的方式進行定義。

1 二維數組

以二維數組爲例,在《C++二維數組》中提到,二維數組的元素又是數組,例如

int a[2][3] = {
  {1, 2, 3}
  ,{4, 5, 6}
};

可以將a看成一個數組,這個數組中有2個元素,每個元素又是一個包含3個int的數組。

2 指針的指針

可以通過定義指針的指針實現動態分配二維數組的內存空間。“指針的指針”與二維數組的關係如圖1所示。

圖1 指針的指針

int** a = new int*[m];

for (int i = 0; i < m; i++)

{

a[i] = new int[n];

}

其中,m是用戶輸入的二維數組的行數,n是列數。

在程序結束前,需要手動釋放二維數組的內存。

for (i = 0; i < m; ++i)

{

delete[] arr[i];

}

delete[] arr;

其中,for循環中delete釋放的是整型1-6所在的內存,最後的delete釋放的是a1和a2所在的內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章