C语言函数传递二维数组
时间: 2024-10-23 22:00:17 浏览: 25
二维数组与指针详解
在C语言中,传递二维数组给函数时,通常有两种常见的方式:
1. **通过指针传地址**:
当你需要只读访问二维数组元素时,可以传入指向数组首元素的一维指针。例如:
```c
void print_array(int arr[][n]) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int my_array[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
print_array(my_array);
return 0;
}
```
这里`arr`是一个一维指针,实际上它指向的是二维数组的第一个元素。
2. **通过引用传递**:
C语言标准库并未提供对引用的支持,但我们可以通过间接传递来模拟类似效果,即先创建一个临时一维数组,然后传递这个临时数组的指针。这种方法适用于需要修改二维数组的情况,但效率较低。
```c
void modify_array(int (*array)[n], int m, int value) {
for (int i = 0; i < m * n; i++) {
array[i] = value; // 对每个元素赋值
}
}
int main() {
int my_array[3][4];
// ... 初始化数组
modify_array(my_array, 3, 13); // 修改所有元素为13
// 然后处理my_array...
return 0;
}
```
阅读全文