在c中深拷贝与浅拷贝有什么区别?

动态 未结 0 119
小小草
小小草 LV1 2023年9月23日 23:40 发表
在 C 语言中,深拷贝和浅拷贝是两种不同的内存拷贝方式。它们的区别在于: 1. 浅拷贝只是简单地复制指针或引用,而不是复制对象本身。这意味着,如果原始对象被修改了,那么所有指向该对象的副本也会受到影响。因此,浅拷贝通常只适用于简单的数据类型,如整数、字符等。 2. 深拷贝则是完全复制一个对象,包括其所有成员变量和指向其他对象的指针。这样,即使原始对象被修改了,拷贝出来的对象也不会受到影响。但是,由于深拷贝需要复制整个对象,所以它可能会比较耗时和占用内存。 下面是一个示例,展示了深拷贝和浅拷贝的区别: ```c #include #include #include typedef struct { char* name; int age; } Person; int main() { // 创建一个 Person 对象 Person* p1 = (Person*)malloc(sizeof(Person)); p1->name = (char*)malloc(sizeof(char) * 10); strcpy(p1->name, "Tom"); p1->age = 20; // 浅拷贝 Person* p2 = p1; printf("p1: %s, %d\n", p1->name, p1->age); printf("p2: %s, %d\n", p2->name, p2->age); // 修改原始对象 strcpy(p1->
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复