一、創建和初始化二維數組
在c++中,我們可以使用new來創建二維數組,將其聲明為指向指針的指針,如下所示:
int **arr = new int*[rows]; //創建一個指向指針類型的指針 for(int i=0; i<rows; i++){ arr[i] = new int[cols]; //針對第i個指針開闢一維數組 } //我們也可以通過嵌套循環對剛創建的二維數組進行初始化 for(int i=0; i<rows; i++){ for(int j=0; j<cols; j++){ arr[i][j] = i+j; } }
在上面的代碼示例中,我們首先創建一個指向指針類型的指針,然後對每個指針開闢一維數組,最終創建了一個二維數組。在創建完成之後,我們還可以通過嵌套循環來對二維數組進行初始化。
二、訪問二維數組
訪問二維數組的方式與一維數組類似,我們可以直接使用下標操作符『[]』來訪問二維數組的各個元素,示例如下:
for(int i=0; i<rows; i++){ for(int j=0; j<cols; j++){ cout << arr[i][j]<< " "; } cout << endl; }
上述代碼使用嵌套循環遍歷二維數組並輸出每個元素的值,其中『arr[i][j]』即為訪問二維數組的方式。
三、釋放二維數組的內存
在使用完二維數組之後,我們需要手動釋放其動態分配的內存空間,可以使用delete和delete[]操作符。示例如下:
for(int i=0; i<rows; i++){ delete[] arr[i]; //釋放指向第i行的一維數組的內存空間 } delete[] arr; //釋放指向指針類型的指針的內存空間
我們首先使用循環將指向每個一維數組的指針依次釋放,然後再釋放指向指針類型的指針的內存空間。
四、二維數組的傳遞
當我們使用函數來對二維數組進行操作時,我們需要將該二維數組傳遞給函數。此時需要注意的是,函數在接收到該二維數組後仍然需要開闢內存空間,否則在對其進行操作時將會出現錯誤。示例如下:
void operateArr(int **arr, int rows, int cols){ //首先在函數內部對二維數組進行內存分配 int **newArr = new int*[rows]; for(int i=0; i<rows; i++){ newArr[i] = new int[cols]; } //然後進行具體的操作,並在最後釋放內存空間 for(int i=0; i<rows; i++){ for(int j=0; j<cols; j++){ newArr[i][j] = arr[i][j] * 2; } } //釋放內存空間 for(int i=0; i<rows; i++){ delete[] newArr[i]; } delete[] newArr; } //在主函數中調用operateArr函數,並傳遞二維數組 int **arr = new int*[rows]; for(int i=0; i<rows; i++){ arr[i] = new int[cols]; } operateArr(arr, rows, cols);
在上述代碼示例中,我們定義了一個operateArr函數,並在該函數中對二維數組進行操作。在函數內部,我們首先進行內存分配,然後進行具體的操作,並在最後釋放內存空間。在主函數中,我們創建了一個二維數組,並將其傳遞給operateArr函數進行操作。
原創文章,作者:AHTIL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/332356.html