函数原型:void *memcpy(void*dest, const void *src, size_t n);

用法:#include<string.h>

功能:从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中。

说明:

1)src和dest所指内存区域不能重叠,函数返回指向dest的指针。如果src和dest以任何形式出现了重叠,它的结果是未定义的。

2)与strcpy相比,memcpy遇到’\0’不结束,而且一定会复制完n个字节。只要保证src开始有n字节的有效数据,dest开始有n字节内存空间就行。

3)如果目标数组本身已有数据,执行memcpy之后,将覆盖原有数据(最多覆盖n个)。

如果要追加数据,则每次执行memcpy()后,要将目标地址增加到要追加数据的地址。

4)source和destin都不一定是数组,任意的可读写的空间均可。

实现memcpy库函数:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
void *memory(void *dst,const void *src,size_t s)
{const char* psrc=static_cast<const char*>(src);char* pdst=static_cast<char*>(dst);if(psrc==NULL||pdst==NULL)return NULL;if(pdst>psrc&&pdst<(psrc+s)){for(size_t i=s-1;i!=-1;i--)pdst[i]=psrc[i];}else{for(size_t i=0;i<s;++i)pdst[i]=psrc[i];}return dst;
}
int main()
{char buf[100]="abcdefghijk";memory(buf+2,buf,5);printf("%s\n",buf+2);return 0;
}

则输出为abcdehijk。

memcpy函数详解相关推荐

  1. memcpy 函数详解

    原型:extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h> 功能:由 ...

  2. linux memcpy需要头文件,memcpy函数详解

    说明: 1.source和destin所指内存区域不能重叠,函数返回指向destin的指针. 2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n).如果要追加 ...

  3. memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...

  4. 【C库函数】memcpy函数详解

    目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解(三个注意点) memcpy 拷贝内存块到目标空间 函数原型 void *memcpy( void *dest, const void *s ...

  5. 赶紧来修炼内功发~内存函数详解大全-memcpy、memmove、memcmp

    目录 1. memcpy EX: PS: 模拟实现: 2. memmove EX: ​编辑 模拟实现: 3. memcmp EX: PS: 模拟实现: 4. memset EX: 模拟实现: 1. m ...

  6. 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr strtok(及其模拟实现)

     系列文章目录 字符函数和字符串函数详解(一)strlen strcpy strcat strcmp 字符函数和字符串函数详解(二)strncpy strncat strncmp strstr str ...

  7. Memset 函数详解

    Memset函数详解 需要的头文件 在C中<string.h> 在C++中<cstring> 函数介绍 memset 原型:extern void *memset(void * ...

  8. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  9. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

最新文章

  1. js 数组 实现 完全树_算法和数据结构 | 树状数组(Binary Indexed Tree)
  2. 值传递和引用传递的讲解
  3. python作品讲解_python实例作品
  4. java scan hbase_hbase+java实例,Scan查询所有、get根据rowkey查询一行或一列数据
  5. Sybase数据库技术,数据库恢复---分享Sybase数据库知识(博客文章索引@51cto)
  6. 把Faster-RCNN的原理和实现阐述得非常清楚
  7. python在windows上创建虚拟环境
  8. Google登陆集成笔记-含坑
  9. 【SDCC 2016】未来应用,IBOS、爱范儿、滴滴出行、腾讯云的微信开发之路
  10. 计算机考研统考压分吗,担忧!考研初试会被压分吗?
  11. 计算机求数值公式,excel表格常用技巧大全/EXCEL表格常用的计算公式
  12. 微信多开脚本2.0 批处理bat,可一键关闭微信
  13. mysql修改校对集_mysql数据库的基本操作(增删改查、字符集、校对集)
  14. 用Python画漂亮的专业插图 ?So easy!
  15. ivue-admin Table单元格内换行问题
  16. C语言九条语句经典例题,一起温故而知新!!!
  17. 中文键盘 linux,键盘和中文输入 教程
  18. php activemq实例,php操作ActiveMQ - 小周博客,小周个人博客,程序猿小王子,技术博客,个人博客模板,php博客系统,设计模式,wzyl - 黑夜遮不住光亮...
  19. 三点法求点三维坐标实验
  20. 通过 叽歪 进行分类

热门文章

  1. 总结:参加第二届网络信息服务国际学术会议有感
  2. Elasticsearch 的全量同步和增量同步
  3. SQL 中的时间格式
  4. MQTT开源库mosquitto安装和使用(一)
  5. 基于51单片机密码锁数码管显示步进电机开锁设计
  6. IPv4与IPv6区别
  7. 中小型研发团队架构实践三要点
  8. Hexo Next主题进阶详细教程
  9. 同一局域网内的其他电脑访问我的电脑本地的网站
  10. 块储存、对象存储、文件存储的区别和联系