c语言指针数组拷贝函数代码
时间: 2025-02-16 16:15:36 浏览: 35
在C语言中,创建一个函数来拷贝整个指针数组通常涉及到深拷贝或浅拷贝的行为,取决于你是想复制指针本身还是指向的内容。下面是一个简单的示例,用于复制指针数组及其指向的元素(浅拷贝),假设所有的元素都是同类型的:
```c
#include <stdio.h>
#include <stdlib.h> // 为了使用malloc()
// 定义一个结构体(如果有复杂的对象)
typedef struct {
int value;
} MyStruct;
// 深拷贝指针函数,这里的浅拷贝是因为只复制地址
void copy_ptr_array(MyStruct** src, MyStruct** dest, int size) {
// 首先检查是否有足够的内存分配新指针
if (!dest || !size) {
printf("Invalid input.\n");
return;
}
*dest = malloc(size * sizeof(MyStruct*)); // 分配新的数组
// 拷贝源数组中的每个指针
for (int i = 0; i < size; i++) {
if (*src[i]) { // 如果指针有效
(*dest)[i] = *src[i]; // 复制指针
} else {
(*dest)[i] = NULL; // 或者设置为NULL,如果你不想复制无效指针
}
}
}
int main() {
MyStruct my_structs[] = { {1}, {2}, {3} };
MyStruct* copied_structs;
int array_size = sizeof(my_structs) / sizeof(my_structs[0]);
// 调用拷贝函数
copy_ptr_array(my_structs, &copied_structs, array_size);
// 现在你可以遍历并打印复制后的数组
for (int i = 0; i < array_size; i++) {
printf("copied_structs[%d].value = %d\n", i, copied_structs[i]->value);
}
// 清理内存
free(copied_structs); // 如果不需要保留原始指针,记得释放分配的内存
return 0;
}
阅读全文
相关推荐


















