// 浅拷贝 #include #include #include struct POS { int *x; int *y; }; int main() { struct POS *p1 = malloc(sizeof(struct POS)); p1->x = (int *)malloc(sizeof(int)); p1->y = (int *)malloc(sizeof(int)); *(p1->x) = 20; *(p1->y) = 30; printf("point1 x=%d,y=%d\n", *(p1->x), *(p1->y)); struct POS *p2 = malloc(sizeof(struct POS)); memcpy(p2, p1, sizeof(struct POS)); // 浅拷贝,只拷贝了结构体本身,没有拷贝结构体成员 *(p2->x) = 200; printf("point2 x=%d,y=%d\n", *(p2->x), *(p2->y)); printf("point1 x=%d,y=%d\n", *(p1->x), *(p1->y)); free(p1->x); free(p1->y); free(p1); free(p2); return 0; }