출처 | https://dojang.io/mod/page/view.php?id=439
memcpy함수에 대해 알아보자.
#include <stdio.h>
#include <string.h> // memcpy 함수가 선언된 헤더 파일
struct Point2D {
int a;
int b;
};
int main()
{
struct Point2D abb1;
struct Point2D tbb2;
abb1.a = 30; // p1의 멤버에만 값 저장
abb1.b = 40; // p1의 멤버에만 값 저장
memcpy(&tbb2, &abb1, sizeof(struct Point2D)); // Point2D 구조체 크기만큼 p1의 내용을 p2로 복사
printf("%d %d\n", tbb2.a, tbb2.b); // 30 40: p1의 내용을 p2로 복사했으므로 30 40
return 0;
}
#include <stdio.h>
#include <stdlib.h> // malloc, free 함수가 선언된 헤더 파일
#include <string.h> // memcpy 함수가 선언된 헤더 파일
struct Point2D {
int a;
int b;
};
int main()
{
struct Point2D* abb1 = malloc(sizeof(struct Point2D));
struct Point2D* tbb2 = malloc(sizeof(struct Point2D));
abb1->a = 30; // p1의 멤버에만 값 저장
abb1->b = 40; // p1의 멤버에만 값 저장
memcpy(tbb2, abb1, sizeof(struct Point2D)); // Point2D 구조체 크기만큼 p1의 내용을 p2로 복사
printf("%d %d\n", tbb2->a, tbb2->b); // 30 40: p1의 내용을 p2로 복사했으므로 30 40
free(tbb2);
free(abb1);
return 0;
}
<1>
struct Point2D abb1;
struct Point2D *tbb2 = malloc(sizeof(struct Point2D));
memcpy(tbb2, &abb1, sizeof(struct Point2D));
<2>
struct Point2D *abb1 = malloc(sizeof(struct Point2D));
struct Point2D tbb2;
memcpy(&tbb2, abb1, sizeof(struct Point2D));