直接看代码

#include<stdio.h>
#include<string.h>
/*返回指向pDest的指针*/
void* MemCopy(void* pDest, const void* pSrc, int nCount)
{char* p = (char*)pDest;char* p1 = (char*)pSrc;while (nCount--)*p++ = *p1++;return pDest;
}
/*返回指向pDest的指针,分有重叠和无重叠两种情况*/
void* MemMove(void* pDest, const void* pSrc, int nCount)
{char* dest = (char*)pDest;char* src = (char*)pSrc;if (dest > src && dest < src + nCount){//有重叠src += nCount;dest += nCount;while (nCount--)*--dest = *--src;}else{//无重叠while (nCount--)*dest++ = *src++;}return pDest;
}char str1[7] = "aabbcc";int main(void)
{printf("The string: %s\n", str1);MemMove(str1 + 2, str1, 4);printf("New string: %s\n", str1);strcpy_s(str1, sizeof(str1), "aabbcc");   // reset stringprintf("The string: %s\n", str1);memmove(str1 + 2, str1, 4);printf("New string: %s\n", str1);
}

输出结果

C语言实用算法系列之memcpy、memmove函数原理与实现相关推荐

  1. C语言实用算法系列之时间族函数、目录遍历

    时间族函数测试 代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <stdlib.h> #includ ...

  2. 【总结】C语言实用算法系列之知识点梳理_附学生管理系统各模块代码

    1.内存四区特点 a)全局区变量空间缺省每个字节为00,栈空间缺省是cc,堆缺省是cd b)堆.全局区(静态区).字符串常量区,与栈区空间的位置距离很大,栈区访问速度可能最快: 2.C语言与C++编译 ...

  3. C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则

    代码 后续文章的排序均采用速度较快的选择排序算法. #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <strin ...

  4. 【终极完美高效】C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针数组

    代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <st ...

  5. C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针+switch

    函数指针简介 #include <stdio.h>int add(int a, int b) {return a + b; }int dec(int a, int b)

  6. C语言实用算法系列之DOS传参“加减乘除计算器”

    简介 主要采用str族函数实现字符检测,只能用DOS传参进行计算,详见运行结果. 代码 #include <stdio.h> #include <string.h> #incl ...

  7. C语言实用算法系列之行指针

    代码 #include <stdio.h>void Test(double (*a)[3]) {printf("sizeof(a)=%d\n", sizeof(a)); ...

  8. C语言实用算法系列之二级指针用法简介

    一.几个知识点 内存四区:栈.全局(静态),常量区,除此以外剩余的空间暂时不能随意使用:除此以外剩余的空间只要通过malloc函数申请一下,就可以使用了: 申请一个堆上的单个int变量的方法:int* ...

  9. C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针

    代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <st ...

最新文章

  1. USACO09FEB Fair Shuttle
  2. python文件读取输出-python分批定量读取文件内容,输出到不同文件中的方法
  3. Docker:Docker的简介、安装、使用方法之详细攻略
  4. PowerDesigner连接SqlServer数据库
  5. MyBatis-Oracle-selectKey返回主键
  6. 奥迪坚SVRM(Screen-Voice Recording Manager)录屏软件正式发布
  7. android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具
  8. 网络安全习惯_健康习惯,确保良好的网络安全
  9. Java学习笔记9-2——JavaWeb
  10. 五菱神车,昙花一现还是创造蓝海?
  11. web前端新手最容易出现的4个错误,你有出错过吗?
  12. 作为 SaaS 初创公司产品负责人,我学到了 5 条经验教训!
  13. doc mysql操作命令_mysql数据库常用命令大全.doc
  14. 《你不可不知的50个艺术知识》之抽象画
  15. 一:计算机基础入门及介绍
  16. android各版本市场占有率报告,百度报告:Android市场份额大增
  17. 从零搭建自动化测试平台
  18. Eureka入口之DiscoveryClient
  19. ★房贷计算器 APP
  20. 与三角有关的级数求和

热门文章

  1. MapReduce算法–二级排序
  2. Java EE重新审视设计模式:异步
  3. ServletRequest startAsync()的有用性有限
  4. 我的测试和代码分析工具箱
  5. 如何配置android的adb环境变量,如何配置adb环境变量?win7配置adb环境变量的方法...
  6. IntelliJ IDEA for Mac的窗口操作
  7. 传一个实体一个string_没想到,一个小小的String还有这么多窍门
  8. 3l如何使用_慢阻肺患者如何选购呼吸机和制氧机,需要注意哪些?
  9. java 中的点_java————形参中的点点点 | 学步园
  10. 微信小程序 高德地图知道两点求道路_微信小程序——计算2点之间的距离