C语言二维数组中第二个数组的长度不一样,要在从第二行开始复制这个二维数组到另一个二维数组中
时间: 2023-12-09 11:25:14 浏览: 80
c语言二维数组的传递
4星 · 用户满意度95%
好的,如果您使用的是 C 语言,可以尝试以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int originalArray[3][4] = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
int **copiedArray = (int **)malloc(sizeof(int *) * 2);
for (int i = 1; i < 3; i++) {
copiedArray[i - 1] = (int *)malloc(sizeof(int) * (sizeof(originalArray[i]) / sizeof(int)));
for (int j = 0; j < (sizeof(originalArray[i]) / sizeof(int)); j++) {
copiedArray[i - 1][j] = originalArray[i][j];
}
}
// 打印新数组
for (int i = 0; i < 2; i++) {
for (int j = 0; j < (sizeof(copiedArray[i]) / sizeof(int)); j++) {
printf("%d ", copiedArray[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < 2; i++) {
free(copiedArray[i]);
}
free(copiedArray);
return 0;
}
```
这段代码首先创建了一个原始二维数组 `originalArray`,其中第二个数组的长度不一样。然后创建了一个新的二维数组 `copiedArray`,并从第二行开始复制 `originalArray` 中的数组到 `copiedArray` 中。
由于 C 语言中的二维数组实际上是一维数组的数组,我们需要使用指针来创建新数组 `copiedArray`。在循环中,我们首先计算 `originalArray` 中第二个数组的长度,然后为每个数组动态分配内存,并使用循环将其复制到新数组中。
最后,我们打印新数组并释放动态分配的内存。
希望这个答案能够解决您的问题,如果您有任何疑问,请随时追问。
阅读全文