C 구조체 복사 - C gujoche bogsa

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�� �޸𸮿� ������ ����� ������ ����.

C 구조체 복사 - C gujoche bogsa

�̸� ���ڿ��� ����ü�� ���ԵǾ� ������ ������ �������� �Ҵ�� �޸��� ������ ����� ������ �����Ƿ� �� ������ ������ �̸� ���ڿ��� ���� �� �ִ�. ��·�� Albert ����ü�κ��� ���ν�Ÿ�ο� ���� ��� ������ �аų� �� �� �ִ� ���̴�. �� ���¿��� Kim�̶�� ���� Ÿ���� ����ü�� Albert�� �����ߴµ� �̷��� �Ǹ� Kim�� Albert�� ��� ����� �״�� ���Թ����� �Ȱ��� ������ ������ �ȴ�. ���� ���Ŀ� Kim�� ����� ����� ���� ���� �Ȱ��� ������ ��µȴٴ� ���� Ȯ���� �� �ִ�.

�׷��� ����� ���Ե� �� ������ �޸� ���θ� �鿩�� ���� ������ �Ҿ��� ���¶�� ���� �� �� �ִµ� �� ����ü ������ pName ������ �Ȱ��� ���� ����Ű�� �ִ� ���̴�. ���� �����ڷ� ���������Ƿ� ���������� �״�� ���ԵǾ���. �����ϴ� �������� �� ������ �Ȱ��� ������ ������� ������ ���� �Ҵ�� �޸𸮸� �����ϰ� �ֱ� ������ �������� ������ �߻��� ������ ���� ������ �ִ�. �� ���� �޸� ��Ȳ�� ������ ����.

C 구조체 복사 - C gujoche bogsa

�켱 �� ���� �� ������ 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 구조체 복사 - C gujoche bogsa

�����Ͱ� ���Ե� ����ü�� �ٷ� ���� ������ ���ǰ� �ʿ��ϴ�. Ư�� C++���� ��ü���� ������ �� �̷� ������ ���� ��Ÿ����.