C++二维数组作形参怎么写
时间: 2024-10-04 16:01:43 浏览: 45
在C++中,直接将二维数组作为函数的形参可能会遇到问题,因为编译器通常不会自动调整大小或复制数组。为了安全地处理二维数组,你可以选择以下几种方式:
1. **传入指针**:
传递指向数组首元素的指针以及数组的行数和列数。
```cpp
void processArray(int rows, int cols, const int (*arr)[cols]) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
processArray(3, 4, arr);
return 0;
}
```
2. **使用矩阵类**:
定义一个包含二维数组数据的类,并提供适当的接口。这样可以确保数组的结构和访问规则。
```cpp
class Matrix {
private:
int** data;
int rows, cols;
public:
Matrix(int rows_, int cols_) : rows(rows_), cols(cols_) {
data = new int*[rows];
for (int i = 0; i < rows; ++i) {
data[i] = new int[cols];
}
}
~Matrix() {
for (int i = 0; i < rows; ++i) {
delete[] data[i];
}
delete[] data;
}
// 添加其他操作...
};
void processMatrix(const Matrix& matrix) {
for (int i = 0; i < matrix.rows; ++i) {
for (int j = 0; j < matrix.cols; ++j) {
cout << matrix.data[i][j] << " ";
}
cout << endl;
}
}
int main() {
Matrix m(3, 4);
// ...填充m...
processMatrix(m);
return 0;
}
```
这两种方式都允许函数在内部对数组进行操作,而不需要复制整个数组。但在传递时需要注意数组的生命周期和内存管理。
阅读全文