1.按1个字节拷贝
(1)不要直接使用形参,要转换成char*
(2)目标地址要实现保存
(3)要考虑源和目标内存重叠的情况

void * mymemcpy(void *dest, const void *src, size_t count)
{
if (dest == NULL || src == NULL)
return NULL;
char *pdest = static_cast <char*>(dest);
const char *psrc = static_cast <const char*>(psrc);
int n = count; if (pdest > psrc && pdest < psrc+count)
{
for (size_t i=n-1; i != -1; --i)
{
pdest[i] = psrc[i];
}
}
else
{
for (size_t i= 0; i < n; i++)
{
pdest[i] = psrc[i];
}
} return dest;
}

2.按4个字节拷贝
(1)转成int*,按照每次4个字节来拷贝,不足四个字节的按一个字节拷贝

void *mymemcpy(void *dst,const void *src,size_t num)
{
assert((dst!=NULL)&&(src!=NULL));
int wordnum = num/4;//计算有多少个32位,按4字节拷贝
int slice = num%4;//剩余的按字节拷贝
int * pintsrc = (int *)src;
int * pintdst = (int *)dst;
while(wordnum--)*pintdst++ = *pintsrc++;
while (slice--)*((char *)pintdst++) =*((char *)pintsrc++);
return dst;
}
 
一个伟大公司的机会

最新文章

  1. String Aop 动态代理例子
  2. Effective Java 57 Use exceptions only for exceptional conditions
  3. java foreach 循环原理
  4. acdream.18.KIDx&#39;s Triangle(数学推导)
  5. phpcms站---去除域名绑定目录中的HTML
  6. (WPF) MVVM: ComboBox Binding, XML 序列化
  7. Ubuntu 下一个可用的音乐播放器
  8. MVC入门教程-视图中的Layout使用
  9. BNU 4067 求圆并
  10. ** poj Y2K Accounting Bug 2586
  11. MVC — 第 6 天
  12. 历年NOIP选题题解汇总
  13. 每日冲刺报告——Day3(Java-Team)
  14. 在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)
  15. docker 中打包部署Springboot项目
  16. ASP.NET MVC - 发布web应用程序、部署到IIS
  17. hql里面union和union all的区别
  18. 第一次php之旅
  19. vue async/await同步 案例
  20. 【单调队列】BZOJ1342-[Baltic2007]Sound静音问题

热门文章

  1. C语言博客作业04—数组
  2. python3 pathlib库中的Path类的使用
  3. [算法模板]Kruskal重构树
  4. HttpClient代理IP及设置连接读取超时
  5. CentOS 7搭建本地yum源和局域网yum源
  6. 关于央行数字货币DCEP的几个特点的思考(转)
  7. kafka参数解析+启动参数解析
  8. Scala 数组操作之Array、ArrayBuffer以及遍历数组
  9. Django 模板语言 for循环
  10. HDFS 其他命令---fsck