C语言举例,二维数组的函数传递
时间: 2024-10-14 17:16:34 浏览: 54
在C语言中,二维数组作为参数传递给函数时,通常会遇到的问题是传递数组本身比较困难,因为C不直接支持引用传递。下面是一个例子,展示了如何通过指针来间接传递二维数组:
```c
#include <stdio.h>
// 函数声明,接受二维整型数组的指针
void printMatrix(int matrix[3][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < rows; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
// 定义一个3x3的二维数组
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
// 获取数组长度并传递给函数
int size = sizeof(arr) / sizeof(arr[0][0]); // 计算行数
printMatrix(arr, size); // 调用函数
return 0;
}
```
在这个例子中,`printMatrix`函数接受一个二维数组的指针`matrix`和它应该包含的行数`rows`。由于C不直接支持数组作为参数,我们通过传递一个指向数组首元素的指针来间接达到效果。
然而,如果函数内部修改了数组内容,外部的主函数`main`也会看到这些改变,这是因为在C语言中,数组名本质上就是指向数组首元素的指针。如果你不想让外部看到内部函数对数组的修改,就需要特别注意防止这样的意外行为。
阅读全文