从结构数组中复制结构可以通过以下步骤实现:
以下是一个示例代码,演示如何从结构数组中复制结构:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int id;
char name[20];
char* description;
} Person;
Person copyPerson(Person original) {
Person copy;
copy.id = original.id;
strcpy(copy.name, original.name);
// 深拷贝指针成员变量
copy.description = (char*)malloc(strlen(original.description) + 1);
strcpy(copy.description, original.description);
return copy;
}
int main() {
Person people[2];
people[0].id = 1;
strcpy(people[0].name, "John");
people[0].description = "A person";
people[1].id = 2;
strcpy(people[1].name, "Jane");
people[1].description = "Another person";
Person copiedPerson = copyPerson(people[0]);
printf("Copied Person:\n");
printf("ID: %d\n", copiedPerson.id);
printf("Name: %s\n", copiedPerson.name);
printf("Description: %s\n", copiedPerson.description);
// 释放动态分配的内存
free(copiedPerson.description);
return 0;
}
这个例子中,我们定义了一个名为Person的结构体,包含id、name和description三个成员变量。copyPerson函数用于复制Person结构体,其中进行了深拷贝操作。在main函数中,我们创建了一个结构数组people,并初始化了其中的两个元素。然后,我们调用copyPerson函数将people[0]复制到copiedPerson中,并打印出复制后的结果。
注意,在实际开发中,需要根据具体情况来决定是否进行深拷贝,以及如何释放动态分配的内存。
领取专属 10元无门槛券
手把手带您无忧上云