C语言二维数组输出
时间: 2025-05-22 15:13:45 浏览: 37
### 如何在C语言中正确输出二维数组
在 C 语言中,可以通过多种方式实现二维数组的输出。以下是几种常见的方法及其对应的代码示例。
#### 方法一:通过函数传递二维数组并逐行输出
当直接传递二维数组到函数时,可以省略第二维的大小,但在函数声明和定义中需明确指定第一维的大小[^1]。下面是一个完整的例子:
```c
#include <stdio.h>
void printArray(int arr[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int myArray[2][3] = {{1, 2, 3}, {4, 5, 6}};
printArray(myArray, 2); // 调用函数输出二维数组
return 0;
}
```
此代码展示了如何将二维数组 `myArray` 的名称作为参数传入函数 `printArray` 中,并逐行列出其内容。
---
#### 方法二:使用指针操作二维数组
另一种常见的方式是利用指针访问二维数组中的元素。例如,可以通过指向每一行首地址的方式来遍历整个数组[^2]。下面是具体实现:
```c
#include <stdio.h>
void printArrayUsingPointer(int (*arr)[3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", *(arr[i] + j)); // 使用指针访问元素
}
printf("\n");
}
}
int main() {
int myArray[2][3] = {{7, 8, 9}, {10, 11, 12}};
printArrayUsingPointer(myArray, 2);
return 0;
}
```
在此代码片段中,`(*arr)[3]` 表明 `arr` 是一个指向长度为 3 的整型数组的指针。这种方式更加灵活,尤其适用于动态分配内存的情况。
---
#### 方法三:基于 memcpy 函数复制并打印二维数组
如果需要先复制二维数组再进行输出,则可借助标准库函数 `memcpy` 完成数据拷贝[^3]。如下所示:
```c
#include <stdio.h>
#include <string.h> // 引入头文件用于调用 memcpy()
void copyAndPrintArray(int src[][3], int dest[][3], int rows) {
memcpy(dest, src, sizeof(src[0]) * rows); // 将源数组的内容复制到目标数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", dest[i][j]);
}
printf("\n");
}
}
int main() {
int source[2][3] = {{13, 14, 15}, {16, 17, 18}};
int destination[2][3]; // 创建一个新的二维数组存储副本
copyAndPrintArray(source, destination, 2);
return 0;
}
```
上述程序演示了如何使用 `memcpy` 来完成两个相同结构的二维数组之间的数据传输,随后对其进行打印。
---
### 总结
以上三种方法分别代表不同的编程风格和技术手段,可以根据实际需求选择合适的方法来实现二维数组的输出功能。无论是直接索引还是间接寻址,都应确保逻辑清晰且边界条件得到妥善处理。
阅读全文
相关推荐


















