c++往函数中传二维数组
时间: 2024-09-14 07:02:25 浏览: 19
在C++中,向函数传递二维数组通常可以通过多种方式实现,包括按引用传递整个数组、使用指针、或者传递数组的一部分。下面介绍几种常见的传递方式:
1. 传递整个二维数组:
如果要传递整个二维数组,可以在函数参数中使用指向数组首元素的指针,并指定数组的第二维大小。例如:
```cpp
void printArray(int (*arr)[10], int rows) {
for(int i = 0; i < rows; ++i) {
for(int j = 0; j < 10; ++j) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
```
这里`arr`是一个指向含有10个整数的数组的指针,`rows`是数组的第一维大小。
2. 传递二维数组的一部分:
如果只想要传递二维数组的一部分,可以通过传递指向数组首元素的指针和两个维度的大小来实现:
```cpp
void printSubArray(int (*arr)[10], int startRow, int rows, int cols) {
for(int i = startRow; i < startRow + rows; ++i) {
for(int j = 0; j < cols; ++j) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
```
在这个例子中,`startRow`是起始行索引,`rows`是传递的行数,`cols`是传递的列数。
3. 使用模板和标准库中的`std::array`(C++11及以上):
如果你使用的是C++11或更新的标准,可以利用模板和`std::array`来传递任意大小的二维数组:
```cpp
template<size_t R, size_t C>
void printTemplateArray(std::array<std::array<int, C>, R> &arr) {
for(auto &subArray : arr) {
for(auto &elem : subArray) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
}
```
这种方式下,`R`和`C`分别代表数组的行数和列数。
使用时,应根据实际需求和数组的大小选择最适合的传递方式。如果数组大小在编译时已知,推荐使用模板方法;如果数组大小不固定,则可能需要使用指针和大小参数传递的方式。