在C++中,動態分配二維數組可以使用指針的指針(二級指針)來實現。以下是一個示例代碼:
#include <iostream>
int main() {
int rows, cols;
// 輸入行數和列數
std::cout << "Enter the number of rows: ";
std::cin >> rows;
std::cout << "Enter the number of columns: ";
std::cin >> cols;
// 動態分配二維數組
int** arr = new int*[rows]; // 創建指向指針的指針,表示行
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols]; // 每個指針指向一個數組,表示列
}
// 為二維數組賦值
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++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
// 釋放內存
for (int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}
該代碼中,首先通過new
運算符動態分配了一個指針數組,表示行。然后,使用循環為每個指針分配一個數組,表示列。接下來,為二維數組賦值,并打印出來。最后,使用delete
運算符釋放內存。