c++中深拷贝二维数组如何实现
时间: 2023-09-22 08:11:56 浏览: 115
在 C 语言中,深拷贝二维数组可以通过以下代码实现:
```c
#include <stdlib.h>
#include <string.h>
int main() {
int m = 3, n = 4;
int** arr = (int**)malloc(m * sizeof(int*));
for (int i = 0; i < m; i++) {
arr[i] = (int*)malloc(n * sizeof(int));
memset(arr[i], 0, n * sizeof(int));
}
// 填充原始数据
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = i * n + j;
}
}
// 深拷贝
int** copy = (int**)malloc(m * sizeof(int*));
for (int i = 0; i < m; i++) {
copy[i] = (int*)malloc(n * sizeof(int));
memcpy(copy[i], arr[i], n * sizeof(int));
}
// 打印拷贝结果
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("%d ", copy[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码首先创建了一个 3x4 的二维数组,填充了一些数据。然后通过循环分配内存空间,用 memcpy 函数进行内存拷贝,最终得到一个新的拷贝二维数组,并打印了结果。这里使用了二重指针,从而可以动态分配内存空间,避免了访问越界等问题。
阅读全文
相关推荐















