c语言指针数组复制代码
时间: 2024-12-16 13:13:39 浏览: 14
在C语言中,如果有一个指针数组,我们可以使用循环和指向指针的指针来复制它。下面是一个简单的示例,假设我们有两个包含`int`类型的指针的数组:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc和free用于动态分配内存
// 原始指针数组
int* original_array[3];
original_array[0] = malloc(sizeof(int)); // 分配空间给第一个元素
original_array[0][0] = 10;
original_array[1] = malloc(sizeof(int));
original_array[1][0] = 20;
original_array[2] = malloc(sizeof(int));
original_array[2][0] = 30;
// 复制后的指针数组
int* copied_array[3];
// 复制指针数组内容
void copy_pointer_array(int** src, int** dst, int size) {
for (int i = 0; i < size; ++i) {
if (*src[i]) { // 如果原始指针指向非NULL
*dst[i] = malloc(sizeof(int)); // 动态分配对应的空间
*(*dst[i]) = *(*src[i]); // 复制原始指针指向的数据
} else {
*dst[i] = NULL; // 如果原始指针为空,则复制空指针
}
}
}
int main() {
copy_pointer_array(original_array, copied_array, 3);
// 打印复制后的数组
for (int i = 0; i < 3; ++i) {
if (copied_array[i]) {
printf("copied_array[%d]: %d\n", i, copied_array[i][0]);
} else {
printf("copied_array[%d]: NULL\n", i);
}
}
// 释放内存
for (int i = 0; i < 3; ++i) {
if (original_array[i]) free(original_array[i]);
if (copied_array[i]) free(copied_array[i]);
}
return 0;
}
```
在这个示例中,我们会先检查每个原始指针是否指向有效的内存区域,然后将其指向的数据复制到新的指针上,并确保正确地管理内存分配。
阅读全文