功能

memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

头文件

所在头文件 <string.h>或< cstring >

函数原型

_CRTIMP int __cdecl __MINGW_NOTHROW     memcmp (const void*, const void*, size_t) __MINGW_ATTRIB_PURE;

参数含义:

  • 第一个参数:目的地址
  • 第二个参数:源地址
  • 第三个参数:所需要复制的字节数

程序用例

  • 目的地址与原地址数据宽度相同的时候
 int main()
{
char a[] = "mmmm";
char b[] = "";
memcpy(b,a,);
printf("%d\n\r",sizeof(b));
printf("%s\n",b);
for(int i = ; i < sizeof(b); i++)
printf("b[%d]的字符串是%c\n\r",i,b[i]);
return ;
}

运行结果

可以看出memcpy函数只复制需要size_t个字节数据到目的地址,目的地址size_t之后的数据并不会改变

  • 目的地址的宽度比原地址不相等时
 int main()
{
char a[] = "abcdef";
short b[] = {0x17,0x18,0x19,0x19};
  //目的地址数据宽
memcpy(b,a,);
printf("b[0]的值是%c\n",b[]);
printf("b[0]的值是%c\n",b[]>>);
printf("b[1]的值是%x\n",b[]);
printf("b[2]的值是%x\n",b[]);
printf("b[3]的值是%x\n",b[]);
return ;
}

运行结果

可以看到原始数据先复制到低位,再复制到高位,感觉这个可能跟数据的存储大端小端有关系,在CCS上测试了也是这样的效果。

  • 目的地址的宽度比原地址的宽度小
 int main()
{
  //源地址数据宽
short c[] = {0x1234,0x5678,0x2345,0x3390};
char d[] = {};
memcpy(d,c,);
for(int i = ; i < sizeof(d); i++)
printf("d[%d]的值是%x\n\r",i,d[i]);
return ;
}

运行结果

先复制的是低位,再复制的是高位。
-复制之后再还原

 int main()
{
char a[] = "abcdef";
short b[] = {0x17,0x18,0x19,0x19};
memcpy(b,a,);
char d[] = {};
memcpy(d,b,);
for(int i = ; i < sizeof(d); i++)
printf("d[%d]的值是%x\n\r",i,d[i]);
return ;
}

运行结果

C/C++ memcpy函数的用法的更多相关文章

  1. memcpy函数的用法以及实现一个memcpy函数

    memcpy的用法 在项目中经常用到memcpy来实现内存的拷贝工作,如下代码片段 memcpy( pData, m_pSaveData_C, iSize * sizeof( unsigned sho ...

  2. C语言memcpy函数的用法

    介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...

  3. memcpy函数用法

    memcpy函数用法 .分类: VC++ VC++ mfc matlab 2011-12-01 19:17 14538人阅读 评论(0) 收藏 举报 null 原型:extern void *memc ...

  4. C语言使用memcpy函数实现两个数间任意位置的复制操作

    c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 用法:void *memcpy(void *dest ...

  5. 使用memcpy函数时要注意拷贝数据的长度

    memcpy函数简介 memcpy函数是C/C++语言中的一个用于内存复制的函数,声明在 string.h 中(C++是 cstring).其原型是: void *memcpy(void *desti ...

  6. 有关日期的函数操作用法总结,to_date(),trunc(),add_months();

    相关知识链接: Oracle trunc()函数的用法 oracle add_months函数 Oracle日期格式转换,tochar(),todate() №2:取得当前日期是一个星期中的第几天,注 ...

  7. Oracle to_date()函数的用法

    Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...

  8. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...

  9. Oracle trunc()函数的用法

    Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...

随机推荐

  1. 【机器学习实战学习笔记(1-2)】k-近邻算法应用实例python代码

    文章目录 1.改进约会网站匹配效果 1.1 准备数据:从文本文件中解析数据 1.2 分析数据:使用Matplotlib创建散点图 1.3 准备数据:归一化特征 1.4 测试算法:作为完整程序验证分类器 ...

  2. Swift - UISplitViewController

    https://blog.csdn.net/weixin_43704791/article/details/86424080 2019年01月13日 AppDelegate中: func applic ...

  3. mysql 中两个日期相减获得 天 小时 分钟 或者 小时:分钟的格式

    /**有一个需求,要求获得两个日期想减的天数,小时数,分钟数.通过查找资料,于是乎我写出了如下代码,来获得两个字段.*/ IFNULL(CONCAT( ,'-',''), ),),'天')), ),) ...

  4. DevOps专题|基础Agent部署系统

    随着京东云业务规模.管理机器规模的扩大,各类agent也在逐渐增多,如日志agent.监控agent.控制系统agent等.这对agent的部署.升级.状态维护提出了很高的要求,一旦某个全局agent ...

  5. 递归(VBA实现)

    案列: 给定n个数,取任意g个数之和等于h的组合. 采用递归的方式实现: Option Explicit Dim arr1(1 To 10000, 1 To 1) As String Dim k, g ...

  6. dic

    参考慕课网 内置函数  map(f,list) f接收一个参数  def format_name(s): return s[0].upper() + s[1:].lower() reduce(f,li ...

  7. Python Learning Day4

    ---恢复内容开始--- 遇到的模块 NumPy:多维数组的有效操作. 高效的数学函数. Matplotlib:可视化:2D和(最近)3D图 SciPy:大型库实现各种数值算法,例如: 线性和非线性方 ...

  8. dac oracle

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  9. Spring中的控制反转和依赖注入

    Spring中的控制反转和依赖注入 原文链接:https://www.cnblogs.com/xxzhuang/p/5948902.html 我们回顾一下计算机的发展史,从最初第一台计算机的占地面积达 ...

  10. 池ThreadPoolExecutor使用简介

    public static void main(String[] args) { //guava 创建线程池 //https://blog.csdn.net/chinabestchina/articl ...