一、new二維數組初始化
int **arr = new int*[n]; for(int i=0; i<n; i++){ arr[i] = new int[m]; }
new二維數組的初始化通常使用雙重循環實現,其中外層循環用於申請$n$個一維數組的空間,內層循環則用於為每個一維數組申請$m$個空間。這樣就可以得到一個大小為$n\times m$的二維數組,可以通過$arr[i][j]$來訪問數組中的元素。
二、new定義二維數組
int (*arr)[m] = new int[n][m];
使用new定義二維數組的方法是先定義一個指針$arr$,它指向一個大小為$m$的一維數組。然後通過在new操作符後面加上$n$來申請$n$個這樣的一維數組。這樣就得到了一個大小為$n\times m$的二維數組,可以通過$arr[i][j]$來訪問數組中的元素。
三、new二維數組delete
int **arr = new int*[n]; for(int i=0; i<n; i++){ arr[i] = new int[m]; } for(int i=0; i<n; i++){ delete[] arr[i]; } delete[] arr;
釋放new二維數組的內存空間時,也需要雙重循環,先逐個釋放每個一維數組的空間,再釋放指向這些一維數組的指針$arr$的空間。
四、new二維數組如何釋放
new二維數組和new一維數組一樣,都需要手動釋放內存空間。如果沒有正確釋放內存空間,程序就會出現內存泄漏這種嚴重問題。因此,我們需要在new操作符申請內存空間之後,及時用delete[]釋放內存空間。
五、new二維數組怎麼delete
int (*arr)[m] = new int[n][m]; delete[] arr;
使用new定義二維數組時,它的釋放方法與new一維數組類似,只需要使用delete[]操作符即可。delete[]會釋放整個數組的空間,因此不需要像釋放new二維數組那樣需要逐個釋放一維數組。
六、new申請二維數組
new關鍵字可以用來申請二維數組的空間,只需要在new後面跟上兩個中括號,例如:
int **arr = new int*[n]; for(int i=0; i<n; i++){ arr[i] = new int[m]; }
七、二維數組new
我們通常使用new操作符來申請動態內存,也可以把它和二維數組組合起來使用,例如:
int (*arr)[m] = new int[n][m];
這樣就可以使用指針$arr$來訪問這個$n\times m$的二維數組。使用二維數組new的好處是可以避免循環申請內存空間,可以一次性申請整個數組所需的內存空間。
八、cnew二維數組
cnew是C++11標準中新添加的一種創建動態數組的方法,其語法比較簡單,例如:
int (*arr)[m] = new int[n][m]();
使用cnew來創建動態數組時,申請的空間都會被初始化為0。它比new操作符申請內存空間後還需要使用memset函數來清空內存空間要方便很多。
九、二維數組的輸入輸出
對於二維數組的輸入輸出,可以使用雙重循環來實現,例如:
int arr[n][m]; for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cin >> arr[i][j]; } } for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ cout << arr[i][j] << " "; } cout << endl; }
通過循環遍歷二維數組的每個元素,進行輸入輸出操作即可。
十、new數組初始化
使用new操作符申請動態內存時,也可以根據需要進行初始化,例如:
int *arr = new int[n](); //申請n個int型空間,並將它們初始化為0 int **p = new int*[n](); //申請n個指針型空間,並將它們初始化為0 int (*q)[m] = new int[n][m](); //申請一個$n\times m$的二維int型數組,並將它初始化為0
通過在new操作符後面加上括號()來進行初始化操作。這樣可以方便地初始化申請的內存空間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193912.html