1.memcpy————从源文件复制num个字节的数据到指定目的地(遇到'\0' 不会停止)
2.memmove————当src文件和dest文件出现空间重叠时使用,效果与上者相同
3.memset————用来设置内存,将内存中的值以字节为单位设置成想要的内容
4.memcmp————比较从ptr1和ptr2指针指向的位置开始,向后的num个字节
下面是代码的模拟实现:
1.
void* my_memcpy(void* dest, const void* src, size_t n)
{
void* ret = dest;
assert(dest && src);
while (n--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return ret;
}
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[7] = { 7,7,7,7,7,7,7 };
my_memcpy(arr2, arr1, 20);
for(int i=0;i<10;i++)
{
printf("%d ", arr2[i]);
}
return 0;
}
2.
void* my_memmove(void* dest, const void* src, size_t n)
{
assert(dest && src);
void* ret = dest;
if (dest < src)
{
while (n--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
while (n--)
{
*((char*)dest+n) = *((char*)src+n);
}
}
return ret;
}
int main()
{
int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
my_memmove(arr1 + 2, arr1, 20);
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr1[i]);
}
return 0;
}