memcpy函数的用法
memcpy函数的模拟实现
memmove函数的用法
memmove函数的模拟实现
memcpy函数的用法:
memcpy()函数头文件:#include<string.h>
memcpy函数的声明:
memcpy(void* destination,const void* source,size_t num);
其中 void * destination 表示目标函数
const void *source 表示原函数
size_t num 表示字节数
memcpy函数的功能:
是把源空间的num个字节的内容拷贝到目标空间里
以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中
通俗一点讲便是:是把源空间的num个字节的内容拷贝到目标空间里
memcpy函数的使用
memcpy函数的模拟实现
//当任何类型都要输出时
//返回值类型应该改变为void
//那么此时所有类型就要进行强转,强转为想要输出的类型
void* my_memcpy(char* desc,const char* scr,int num)
{
char* ret=(char*)desc;
assert(desc && scr);
while(num--)
{
*(char *)desc=*(char*)scr;
desc=(char*)desc+1;
scr=(char*)scr+1;
}
return ret;
}
memmove函数的用法:
memmove()函数的头文件: #include <string.h>
memmove()函数的声明:
memmove(void* destination,const void* source,size_t num);
其中 void * destination 表示目标函数
const void *source 表示原函数
size_t num 表示字节数
memmove()函数的功能:可以对任何类型的数组进行任意字节的拷贝。
注意:此时的memmmove 可以进行重叠拷贝
memmove函数的使用:
memmove函数的模拟实现:
//当返回值为void时
//要进行强转
void* my_memmove(char* desc,const char* scr,int num)
{
assert(desc && scr);
char* ret=(char*)desc;
//当desc<scr是,我们要从左开始copy
if(desc<scr)
{
while(num--)
{
desc=(char*)scr;
desc=(char*)desc+1;
scr=(char*)scr+1;
}
}
//当desc>scr时,要从右边开始copy
else
{
while(num--)
{
*((char*)desc+num)=*((char*)scr+num);
}
}
return ret;
}