C++中二维数组传参 但二维数组的行数列数都是变量
时间: 2024-10-10 13:00:28 浏览: 4
在C++中,如果二维数组的行数和列数都是变量,可以先创建一个动态分配内存的数组,然后传递指向该数组的指针和尺寸信息。由于C++标准库没有直接支持动态大小的二维数组,我们可以使用`std::vector`来模拟这种灵活性。以下是一个例子:
```cpp
#include <iostream>
#include <vector>
// 定义函数接受一个动态大小的二维数组指针及其维度
template <typename T>
void printArray(T* data, size_t rows, size_t cols) {
for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
std::cout << data[i * cols + j] << " ";
}
std::cout << "\n";
}
}
int main() {
// 动态创建二维数组
size_t rows = 3;
size_t cols = 4;
std::vector<int> dynamicMatrix(rows * cols);
// 初始化并打印
for (size_t i = 0; i < rows * cols; ++i)
dynamicMatrix[i] = i + 1;
printArray(dynamicMatrix.data(), rows, cols);
return 0;
}
```
在这个例子中,我们用`std::vector`存储了一个等效于二维数组的数据结构,并在函数`printArray`里处理这个动态数组。