在 C 中使用结构的浅拷贝
Shallow Copy with Structs in C
假设您有以下结构:
typedef struct {
int age;
} Child;
typedef struct {
int age;
Child firstChild;
} Parent;
int main() {
Parent p1 = {5, {3}};
Parent p2 = p1;
}
当您将 p1
复制到 p2
时,您是在两个字段上还是仅在 Child
字段上执行浅表复制?我的猜测是 age
是按值复制的,但是 firstChild
是浅复制的。
除(可能)对齐位外的所有内容都将被复制。
当你有指针时,指针的值将被复制(地址),而不是它们指向的内容。这就是你可以称之为 "shallow".
假设您有以下结构:
typedef struct {
int age;
} Child;
typedef struct {
int age;
Child firstChild;
} Parent;
int main() {
Parent p1 = {5, {3}};
Parent p2 = p1;
}
当您将 p1
复制到 p2
时,您是在两个字段上还是仅在 Child
字段上执行浅表复制?我的猜测是 age
是按值复制的,但是 firstChild
是浅复制的。
除(可能)对齐位外的所有内容都将被复制。
当你有指针时,指针的值将被复制(地址),而不是它们指向的内容。这就是你可以称之为 "shallow".