#include<stdio.h>
#include <stdlib.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 (void)
{
struct tagM1 x1,x2;
x1.x=5;
x1.y=10;
strcpy(x1.buffer,"memory copy");
printf("%d %d %d \n", sizeof(x1.x),sizeof(x1.y),sizeof(x1.buffer));
My_memcpy(&x2,&x1,sizeof(x1));
puts(x2.buffer);
printf("%d %d \n", x2.x, x2.y);
}
void* My_memcpy(void * dst, const void *src, unsigned int count)
{
void * ptr= dst;
while(count--)
{
*(char*)dst = *(char*)src;
dst= (char*)dst +1 ;
src= (char*)src +1 ;
}
return ptr;
}
위의 소스는 메모리를 복사하는 함수 예제 인데요.
왜 함수에서
void* My_memcpy(void * dst, const void *src, unsigned int count)
여기서 왜 void* 형을 사용하나요?
이 예제가 구조체를 복사하는 함수라서 void* 형을 쓰는건가요?
그리고 while 안에 쓰여진 (char*)는 void*형을 인자로 받아와서 자료형을 정해주는 역활인가요??
복사된 x2 를 보면 구조체 멤버 x,y 값도 복사가 됐는데 int형으로 복사
한건 없는거같은데 어느 구간? 에서 복사가 된건가요 ? |