C/C++ memcpy函数的用法
功能
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函数的用法的更多相关文章
- memcpy函数的用法以及实现一个memcpy函数
memcpy的用法 在项目中经常用到memcpy来实现内存的拷贝工作,如下代码片段 memcpy( pData, m_pSaveData_C, iSize * sizeof( unsigned sho ...
- C语言memcpy函数的用法
介绍 memcpy是memory copy的缩写,意为内存复制,在写C语言程序的时候,我们常常会用到它.它的函原型如下: void *memcpy(void *dest, const void *sr ...
- memcpy函数用法
memcpy函数用法 .分类: VC++ VC++ mfc matlab 2011-12-01 19:17 14538人阅读 评论(0) 收藏 举报 null 原型:extern void *memc ...
- C语言使用memcpy函数实现两个数间任意位置的复制操作
c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中. 用法:void *memcpy(void *dest ...
- 使用memcpy函数时要注意拷贝数据的长度
memcpy函数简介 memcpy函数是C/C++语言中的一个用于内存复制的函数,声明在 string.h 中(C++是 cstring).其原型是: void *memcpy(void *desti ...
- 有关日期的函数操作用法总结,to_date(),trunc(),add_months();
相关知识链接: Oracle trunc()函数的用法 oracle add_months函数 Oracle日期格式转换,tochar(),todate() №2:取得当前日期是一个星期中的第几天,注 ...
- Oracle to_date()函数的用法
Oracle to_date()函数的用法 to_date()是Oracle数据库函数的代表函数之一,下文对Oracle to_date()函数的几种用法作了详细的介绍说明,供您参考学习. 在Orac ...
- js中bind、call、apply函数的用法
最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站.但 ...
- Oracle trunc()函数的用法
Oracle trunc()函数的用法 /**************日期********************/1.select trunc(sysdate) from dual --2013-0 ...
随机推荐
- 修改虚拟机ip
在命令行里输入:more /etc/sysconfig/network-scripts/ifcfg-eth0 (注意more后要空一格,还有eth0,最后是数字零). 然后再输入:ifconfig ...
- Pandas_one-hot encoding与dummy encoding
Pandas_特征编码 one-hot encoding 基本思想是将离散型特征的每一种取值都看成一种状态,保证每一个取值只会使得一种状态处于激活状态. 编码函数pd.get_dummies() du ...
- 科学 multi port
issues/679 create new UUID cat /proc/sys/kernel/random/uuid example config : multi port , multi user ...
- kill -HUP 什么意思?
参考 74.在DNS系统测试时,设named进程号是53,命令 D 通知进程重读配置文件.A kill –USR2 53 B kill –USR1 53 C kill -INT 63 D kill – ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- <强化学习>马尔可夫决策过程MDP
一.MDP / NFA :马尔可夫模型和不确定型有限状态机的不同 状态自动机:https://www.cnblogs.com/AndyEvans/p/10240790.html MDP和NFA ...
- 最短路问题-- Dijkstra Choose the best route
Choose the best route Problem Description One day , Kiki wants to visit one of her friends. As she i ...
- java后台开发细节记录
1. ResultMap是程序员控制SQL查询结果和实体类的映射关系,而不是sql语句中字段的重命名,所以在sql语句中还是要按照原来字段的格式进行书写.
- flask前后端数据交互
1.后端如何得到前端数据1)如果前端提交的方法为POST:后端接收时要写methods=[‘GET’,‘POST’]xx=request.form.get(xx);xx=request.form[’‘ ...
- Python D9 学习
Python 设置环境 当安装好Python 后 在计算机的属性里面 高级语言设置 环境变量. 环境变量里面的path 更改为Python的 树目录 可以从计算机直接下达命令 打开Pytho ...