定义一个函数,能拷贝任意长度的二维数组,并将拷贝后的数组输出。自己举例验证拷贝函数是否可行。(在不改变函数调用的情况下,输出结果随定义的二位数组的改变而改变)
时间: 2024-09-21 22:12:52 浏览: 109
在C语言中,你可以定义一个函数来拷贝二维数组。这个函数通常接受源数组的指针、数组的行数和列数作为参数,然后创建一个新的二维数组并复制源数组的内容。以下是一个简单的实现例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二维数组类型
typedef int (*array_type)[ROW_SIZE];
// 拷贝二维数组函数
void copy_array(array_type src, array_type dst, size_t rows, size_t cols) {
for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
dst[i][j] = src[i][j];
}
}
}
// 示例验证
#define ROW_SIZE 3 // 假设每个子数组有3个元素
void print_array(array_type arr, size_t rows, size_t cols) {
for (size_t i = 0; i < rows; ++i) {
for (size_t j = 0; j < cols; ++j) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
int main() {
int source[ROW_SIZE][ROW_SIZE] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int destination[ROW_SIZE][ROW_SIZE];
// 拷贝源数组到destination
copy_array(source, destination, ROW_SIZE, ROW_SIZE);
// 输出原始源数组
printf("Original Source Array:\n");
print_array(source, ROW_SIZE, ROW_SIZE);
// 输出拷贝后的数组
printf("Copied Array:\n");
print_array(destination, ROW_SIZE, ROW_SIZE);
return 0;
}
```
在这个例子中,`copy_array`函数接收两个二维数组的指针,以及它们的行数和列数。如果源数组的大小改变了(但保持了元素数量不变),只要你在主程序中相应地调整`source`和`destination`的大小,输出的结果就会随着数组的改变而改变。
阅读全文