一、創建和初始化二維數組
在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-hant/n/332356.html
微信掃一掃
支付寶掃一掃