13-3-��.���� ����
����ü���� ������ �����ϴٴ� ���� ���������� ������ ���ȴٴ� ����̴�. ���� �����δ� ���Կ� ���� ����ġ ���� ������ ���ϴ� ��쵵 �ִ�. ����ü ��� �߿� �����Ͱ� �ְ� �� �����Ͱ� ����ü �ܺ��� �� ����Ű�� �ִٰų� �Ǵ� ����� ������� �ܺ��� � ����� �����ϰ� �ִٸ� �ܼ��� ���縸 �ؼ��� �纻�� ���� �� ����. ���� ��� ����ü ��� �߿� ������ ���� ������ �ϴ� ID�� �ִٸ� �� ��쵵 ������ �ȴ�. � ������ �ִ��� ������ ����� ���� ����ü�� ���� ������ ����.
#include <Turboc.h>
struct tag_Friend {
char *pName;
int Age;
double Height;
};
void main()
{
tag_Friend Albert={NULL,80,165.0};
tag_Friend Kim;
Albert.pName=(char *)malloc(32);
strcpy(Albert.pName,"�˹�Ʈ ���ν�Ÿ��");
Kim=Albert;
printf("�̸�=%s, ����=%d, Ű=%.1f\n",Kim.pName,Kim.Age,Kim.Height);
strcpy(Albert.pName,"������ ��ư");
printf("�̸�=%s, ����=%d, Ű=%.1f\n",Kim.pName,Kim.Age,Kim.Height);
free(Albert.pName);
free(Kim.pName);
}
tag_Friend ����ü�� ������ ������ ��� pName�� ���ԵǾ� �ִµ� �����ʹ� ���� �迭�� ���� ���� ���� ���ڿ��� �ٷ� �� �ִ� ������ �ִ� �ݸ� ������ �����ϱ� ���� ���� �Ҵ��� �ؾ� �ϴ� ���ŷο��� �ִ�. main���� Albert��� �̸����� ����ü ������ �����ϰ� pName�� 32�� ���̸� �Ҵ��� �� �� �� �̸��� ������ �־���. �̶� Albert�� �� ������ ����� ������ ����.
�̸� ���ڿ��� ����ü�� ���ԵǾ� ������ ������ �������� �Ҵ�� ���� ������ ����� ������ �����Ƿ� �� ������ ������ �̸� ���ڿ��� ���� �� �ִ�. ��·�� Albert ����ü�κ��� ���ν�Ÿ�ο� ���� ��� ������ �аų� �� �� �ִ� ���̴�. �� ���¿��� Kim�̶�� ���� Ÿ���� ����ü�� Albert�� �����ߴµ� �̷��� �Ǹ� Kim�� Albert�� ��� ����� �״�� ���Թ����� �Ȱ��� ������ ������ �ȴ�. ���� ���Ŀ� Kim�� ����� ����� ���� ���� �Ȱ��� ������ ��µȴٴ� ���� Ȯ���� �� �ִ�.
���� ����� ���Ե� �� ������ �� ���θ� �鿩�� ���� ������ �Ҿ��� ���¶�� ���� �� �� �ִµ� �� ����ü ������ pName ������ �Ȱ��� ���� ����Ű�� �ִ� ���̴�. ���� �����ڷ� ���������Ƿ� ���������� �״�� ���ԵǾ���. �����ϴ� �������� �� ������ �Ȱ��� ������ ������� ������ ���� �Ҵ�� �� �����ϰ� �ֱ� ������ �������� ������ ���� ������ ���� ������ �ִ�. �� ���� �� ��Ȳ�� ������ ����.
�켱 �� ���� �� ������ pName�� �ٲٸ� ������ ��� ������ �´ٴ� ���� ������. Kim�� Albert�� �纻���� �����Ǿ��µ� Albert�� pName�� �����ϸ� Kim�� �̸��� ���� ����� ���ۿ� ������ �ݴ��� ��쵵 ����������. ���Կ� ���� �� ������ �Ͻ������� ���� ���°� �DZ�� ������ ���� �������� ���谡 �Ǿ����Ƿ� ������ �纻�̶� �� �� ����. ������ ���� i�� ���� j=i�� �����Ͽ� �纻 j�� ������ٸ� j�� ��� �Ǵ��� i�� ������ ���� ���ƾ� �Ѵ�.
�� �ٸ� �������� �� ������ �ı��� �� �� �������� ������ ������ �ִٴ� ���̴�. Albert�� �ڽ��� ��� pName�� �������� �Ҵ�Ǿ����Ƿ� �ı��DZ� ���� �� �� �����Ϸ��� �� ���̴�. �̷��� �Ǹ� Kim�� pName�� ���� �����Ǿ� ���� Kim�� ������ �Ҿ� ������ �ǰ� ���� Kim�� pName�� ������ ���� �̹� ������ �� �������� �����ϰ� �ǹǷ� �̻� ������ �ϰ� �ȴ�.
��ó�� ���� �����ڷ� �ܼ� �����Ͽ� ����ü�� �纻�� ����� ���� ���� ����(Shallow Copy)��� �Ѵ�. ����ü�� ������� ������ �Ǽ� ������ �ܼ� Ÿ�Ը� ���� ���� ���� ���縸���ε� ������ �纻�� ���� �� ������ �����Ͱ� ���ԵǾ� ���� ���� ���Կ� ���� �Ȱ��� ������ ����Ű�� �������� �ִ�. �����Ϳ� ���ؼ��� ������ �� �Ҵ��� �� ������ �����ؾ� �� ������ ������ �������� ������ �ȴ�.
�̷� ������ ������ ����� ���ؼ��� ������ �ٷ� �������� �ʰ� �ʿ��� ���̸�ŭ ���� �Ҵ��� �� ������ ���븸 ���ϴ� ���縦 ���� ����(Deep Copy)��� �Ѵ�. ������ ����Ӹ� �ƴ϶� ����� ����Ű�� ���� ��������� ���� �����ϴ� �� �� ������ ���� ����̴�. �� �������� Albert�� ���� �����Ͽ� �纻�� �ۼ��Ϸ��� ���� �� ���� �����ؾ� �Ѵ�.
Kim=Albert;
Kim.pName=(char *)malloc(strlen(Albert.pName)+1);
strcpy(Kim.pName,Albert.pName);
printf("�̸�=%s, ����=%d, Ű=%.1f\n",Kim.pName,Kim.Age,Kim.Height);
�ϴ� ��� ����� �����ϵ� ������ ����� ���ؼ��� ������ ���̸�ŭ ������ �� �Ҵ��ϰ� ������ ���븸 �����ߴ�. �̷��� �Ǹ� �� ������ ������ ������ �� �����Ƿ� ���Ӽ��� ������� ������ ������ �����ص� �ݴ����� ���� ������ ���� �ʴ´�. ���� �� ������ ���������� �� �����ص� �ƹ��� ������ ����.
�����Ͱ� ���Ե� ����ü�� �ٷ� ���� ������ ���ǰ� �ʿ��ϴ�. Ư�� C++���� ��ü���� ������ �� �̷� ������ ���� ��Ÿ����.