#include <stdio.h>
#include <assert.h>
void* my_memcpy(void* dest, const void* src, size_t count)
{
assert( dest != NULL || src != NULL);
char* d;
const char* s;
//地址重叠
if(dest > src + count || dest < src)
{
d = (char*)dest;
s = (char*)src;
while( count-- )
{
*d++ = *s++;
}
}
else
{
d = (char*) (dest + count -1);
s = (char*) (src + count -1);
while( count-- )
{
*d-- = *s--;
}
}
return dest;
}
int main()
{
int buff1[50] = {1,2,3,4,5,6,7,8};
int buff2[50] = {};
my_memcpy(buff2,buff1,32);
for(int i =0 ; i < 8; i++)
{
printf("%d\n",buff2[i]);
}
}
c语言实现memcpy函数 (考虑内存重叠以及指针的强制转换)
最新推荐文章于 2022-07-21 02:21:36 发布