C语言实用算法系列之memcpy、memmove函数原理与实现
直接看代码
#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函数原理与实现相关推荐
- C语言实用算法系列之时间族函数、目录遍历
时间族函数测试 代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <stdlib.h> #includ ...
- 【总结】C语言实用算法系列之知识点梳理_附学生管理系统各模块代码
1.内存四区特点 a)全局区变量空间缺省每个字节为00,栈空间缺省是cc,堆缺省是cd b)堆.全局区(静态区).字符串常量区,与栈区空间的位置距离很大,栈区访问速度可能最快: 2.C语言与C++编译 ...
- C语言实用算法系列之学生管理系统_单向链表内操作_提取排序规则
代码 后续文章的排序均采用速度较快的选择排序算法. #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <strin ...
- 【终极完美高效】C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针数组
代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <st ...
- C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针_函数指针+switch
函数指针简介 #include <stdio.h>int add(int a, int b) {return a + b; }int dec(int a, int b)
- C语言实用算法系列之DOS传参“加减乘除计算器”
简介 主要采用str族函数实现字符检测,只能用DOS传参进行计算,详见运行结果. 代码 #include <stdio.h> #include <string.h> #incl ...
- C语言实用算法系列之行指针
代码 #include <stdio.h>void Test(double (*a)[3]) {printf("sizeof(a)=%d\n", sizeof(a)); ...
- C语言实用算法系列之二级指针用法简介
一.几个知识点 内存四区:栈.全局(静态),常量区,除此以外剩余的空间暂时不能随意使用:除此以外剩余的空间只要通过malloc函数申请一下,就可以使用了: 申请一个堆上的单个int变量的方法:int* ...
- C语言实用算法系列之学生管理系统_单向链表外排序_堆内数组存储链表节点指针
代码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> #include <st ...
最新文章
- USACO09FEB Fair Shuttle
- python文件读取输出-python分批定量读取文件内容,输出到不同文件中的方法
- Docker:Docker的简介、安装、使用方法之详细攻略
- PowerDesigner连接SqlServer数据库
- MyBatis-Oracle-selectKey返回主键
- 奥迪坚SVRM(Screen-Voice Recording Manager)录屏软件正式发布
- android 抽屉_Android Studio之路,我们来了解一下Google官方Android开发工具
- 网络安全习惯_健康习惯,确保良好的网络安全
- Java学习笔记9-2——JavaWeb
- 五菱神车,昙花一现还是创造蓝海?
- web前端新手最容易出现的4个错误,你有出错过吗?
- 作为 SaaS 初创公司产品负责人,我学到了 5 条经验教训!
- doc mysql操作命令_mysql数据库常用命令大全.doc
- 《你不可不知的50个艺术知识》之抽象画
- 一:计算机基础入门及介绍
- android各版本市场占有率报告,百度报告:Android市场份额大增
- 从零搭建自动化测试平台
- Eureka入口之DiscoveryClient
- ★房贷计算器 APP
- 与三角有关的级数求和
热门文章
- MapReduce算法–二级排序
- Java EE重新审视设计模式:异步
- ServletRequest startAsync()的有用性有限
- 我的测试和代码分析工具箱
- 如何配置android的adb环境变量,如何配置adb环境变量?win7配置adb环境变量的方法...
- IntelliJ IDEA for Mac的窗口操作
- 传一个实体一个string_没想到,一个小小的String还有这么多窍门
- 3l如何使用_慢阻肺患者如何选购呼吸机和制氧机,需要注意哪些?
- java 中的点_java————形参中的点点点 | 学步园
- 微信小程序 高德地图知道两点求道路_微信小程序——计算2点之间的距离