接下来将会对4个内存函数进行介绍:memcpy、memmove、memset、memcmp,这四个函数直接使用都需要包含<string.h>头文件
1、memcpy
函数声明:void * memcpy(void * destination,const void * source,size_t num)
函数使用:从source位置开始向后复制num个字符,并且遇到'\0'不会停下,如果source和destination有重叠,复制结果都是未定义
memcpy的模拟实现:
void* my_memcpy(void* des, const void* source, size_t num)
{
void* ret = des;
while (num--)
{
*(char*)des = *(char*)source;
des = (char*)des + 1;;
source=(char *)source+1;
}
return ret;
}
2、memmove
函数声明:void *memmove(void * destination,const void * source,size_t num)
函数使用:内存块重叠的情况使用
memmove 的模拟实现
void* my_memmove(void* des, const void* source, size_t num)
{
void* ret = des;
if (des < source)
{
while (num--)
{
*(char*)des = *(char*)source;
des = (char*)des + 1;
source = (char*)source + 1;
}
}
else
{
while (num--)
{
*((char*)des + num) = *((char*)source + num);
}
}
return ret;
}
3、memset
函数声明:void *memset(void * ptr,int value,size_t num)
函数使用:⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容
具体使用:
4、memcmp
函数声明:int memcmp(const void *ptr1,const void * ptr2,size_t num)
函数使用:⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节
具体使用: