我尝试用谷歌搜索这个,但结果只弹出面向对象的语言。
根据我的理解,浅复制是复制结构的某些成员。
所以可以说一个结构是
typedef struct node
{
char **ok;
int hi;
int yep;
struct node *next;
}node_t
复制 char** 将是浅复制
但是复制整个链表会是深复制吗?
我的想法正确还是偏离了?谢谢。
不。在此特定上下文中的浅复制意味着您将“引用”(指针,无论什么)复制到对象,并且这些引用或指针的后备存储是相同的,它是位于同一内存位置的完全相同的对象。
相比之下,深复制意味着复制整个对象(结构)。如果它具有可以浅复制或深复制的成员,您还可以对它们进行深复制。考虑以下示例:
typedef struct {
char *name;
int value;
} Node;
Node n1, n2, n3;
char name[] = "This is the name";
n1 = (Node){ name, 1337 };
n2 = n1; // Shallow copy, n2.name points to the same string as n1.name
n3.value = n1.value;
n3.name = strdup(n1.name); // Deep copy - n3.name is identical to n1.name regarding
// its *contents* only, but it's not anymore the same pointer
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)