Deep copy 질문드립니다
PinkPearl
질문 제목 : deep copy 질문드립니다shallow 를 deep 카피로 바꾸는데 어떻게해야할까요?질문 내용 : shallow copy 인데 이걸 deep copy로 바꾸려면 어떻게해야하는건가요?? ㅠㅠ
#includestdio.h
#include stdlib.h
#include string.h
struct point{
int x;
int y;
char id[10];
char *color;
};
void show(struct point pt)
{
printf(x:%d, y:%d id:%s color:%s \n, pt.x, pt.y, pt.id, pt.color);
}
int main()
{
struct point p1={1, 2, 121212};
struct point p2={3, 4, 343434};
p1. color = (char*)malloc(30);
strcpy(p1. color, red);
show(p1);
show(p2);
printf(----------\n);
p2 = p1;
show(p1);
show(p2);
printf(----------\n);
p1. x = 8;
p1. y = 9;
strcpy(p1. id, 898989);
strcpy(p1. color, blue);
show(p1);
show(p2);
return 0;
}
-
튼동
감사합니다 ㅠㅠ C는 하면 할수록 점점 더 어려워지네요 ㅠㅠ
-
튼싹
p2 = p1;
이 줄 다음에
p2.color = (char*)malloc(30);
strcpy(p2.color, p1.color);
추가하면 될겁니다.
그리고 해제는
free(p1.color);
free(p2.color); -
찬놀
Deep copy로 하면 출력이
x:1, y:2 ID:121212 color:RED
x:3, y:4 ID: 343434 colr:(null)
x:1, y:2 ID:121212 color:RED
x:1, y:2 ID:121212 color:RED
x:8, y:9 ID:898989 color:BLUE
X:1, y:2 ID:121212 color:RED
이렇게 된다고 하네요 ㅠㅠ