C

[C] 104 메모리를 복사하는 함수 만들기

qkrwngus 2021. 1. 28. 19:35

Desc :

void* 형은 크기가 정해지지 않은 포인터 형

형변환해서 사용한다


Source Code :

#include <stdio.h>
#include <string.h>

struct tagM1
{
	int x;
	int y;
	char buffer[30];
};

void* My_memcpy(void* dst, const void* src, unsigned int count);

void main()
{
	struct tagM1 x1, x2;

	x1.x = 5;
	x1.y = 10;
	strcpy(x1.buffer, "memory copy");

	My_memcpy(&x2, &x1, sizeof(x1));

	puts(x2.buffer);
}

void* My_memcpy(void* dst, const void* src, unsigned int count)
{
	void* ret = dst;	// dst의 주소를 저장하는 포인터 변수

	while (count--)	//count~1까지 반복
	{
		*(char*)dst = *(char*)src;	 // src가 가리키는 문자형 번지에 있는 값을 dst가 가리키는 문자형번지에 대입
		dst = (char*)dst + 1;	// 문자형크기만큼 포인터 증가
		src = (char*)src + 1;
	}

	return ret; 
}

 


Result :