memcpy
void* memcpy( void* dest, const void* sour, size_t num )
函数功能:
函数返回值:
说明:
- 从 sour 的位置开始向后复制 num 个字符的数据到 dest 的内存位置。
- memcpy() 遇到 ‘\0’ 不会停止复制。
- 如果 sour 和 dest 有任何的重叠,复制结果都是未定义的。
函数实现:
void* my_memcpy(void* dest, const void* sour, size_t num)
{
assert(dest != NULL);
assert(sour != NULL);
void* ret = dest;
while (num--)
{
*(char*)dest = *(char*)sour;
dest = (char*)dest + 1;
sour = (char*)sour + 1;
}
return ret;
}
memmove
void* memmove( void* dest, const void* sour, size_t num )
函数功能:
函数返回值:
说明:
- memmove() 和 memcpy() 的差别是 memmove() 处理的源内存块和目标内存块可以重叠。
- 如果源空间和目标空间出现重叠,就得使用 memmove() 处理。
函数实现:
void* my_memmove(void* dest, const void* sour, size_t num)
{
assert(dest != NULL);
assert(sour != NULL);
void* ret = dest;
if (dest <= sour || (char*)dest >= ((char*)sour + num))
{
while (num--)
{
*(char*)dest = *(char*)sour;
dest = (char*)dest + 1;
sour = (char*)sour + 1;
}
}
else
{
dest = (char*)dest + (num - 1);
sour = (char*)sour + (num - 1);
while (num--)
{
*(char*)dest = *(char*)sour;
dest = (char*)dest - 1;
sour = (char*)sour - 1;
}
}
return ret;
}
memset
void* memset( void* dest, int c, size_t num );
函数功能:
函数返回值:
说明:
- memset() 将从 dest 开始的 num 个字节设置为字符 c 。
memcmp
int memcmp( const void* ptr1, const void* ptr2, size_t num )
函数功能:
函数返回值:
- 从 ptr1 指针开始的 num 个字节大于从 ptr2 指针开始的 num 个字节,则返回大于 0 的数字;
- 从 ptr1 指针开始的 num 个字节等于从 ptr2 指针开始的 num 个字节,则返回 0 ;
- 从 ptr1 指针开始的 num 个字节小于从 ptr2 指针开始的 num 个字节,则返回小于 0 的数字。
说明:
- 比较 ptr1 指针和 ptr2 指针开始的 num 个字节。
|