在C++中,可以通过指针或引用的方式将动态二维数组传递给函数。
void function(int** array, int rows, int cols) {
// 访问数组元素
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
cout << array[i][j] << " ";
}
cout << endl;
}
}
int main() {
int rows = 3;
int cols = 3;
// 创建动态二维数组
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 * rows + j;
}
}
// 调用函数
function(arr, rows, cols);
// 释放内存
for(int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}
void function(int**& array, int rows, int cols) {
// 访问数组元素
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
cout << array[i][j] << " ";
}
cout << endl;
}
}
int main() {
int rows = 3;
int cols = 3;
// 创建动态二维数组
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 * rows + j;
}
}
// 调用函数
function(arr, rows, cols);
// 释放内存
for(int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
return 0;
}
无论是使用指针还是引用,都可以在函数中对动态二维数组进行操作。需要注意的是,在传递动态二维数组给函数后,需要在函数结束后手动释放内存,以避免内存泄漏。