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 ...
随机推荐
- Day2-T4
原题目 当然这是原题+,要输路径的.所以必须DFS. Describe:DP or DFS code: #include<bits/stdc++.h> using namespace st ...
- 量化投资_Multicharts数组操作函数_append()追加函数(自定义)
1. Multicharts中关于数组的操作比较麻烦,而且当中所谓的动态数组的定义并不是像其他语言那种的概念.因此要对数组进行元素“”追加“”的话,需要重新更改数组的索引,然后再最后一个位置添加val ...
- Social GAN代码要点记录
近日在阅读Social GAN文献的实验代码,加深对模型的理解,发现源代码的工程化很强,也比较适合构建实验模型的学习,故细致阅读.下文是笔者阅读中一些要点总结,有关于pytorch,也有关于模型自身的 ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:条件语句
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- spring boot集成mybatis(2) - 使用pagehelper实现分页
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- Ansible常见错误解析
背景 由于工作中经常用到ansible,所以整理了常用的ansible错误及原因分析,方便自己也方便别人参考. 1.shell 模块常见错误 1.1 使用shell遇到"msg": ...
- axios基础介绍
axios基础介绍 get请求要在params中定义,post要在data中定义.
- Tensorflow学习教程------代价函数
Tensorflow学习教程------代价函数 二次代价函数(quadratic cost): 其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数.为简单起见,使用一 ...
- php优惠券生成-去重
记录一次优惠券生成-去重 方法一 /** * 生成批量礼品消费券 */ public function giftCardAddOp() { //接收get值 $num = $_GET['gift_nu ...
- 程序中出现list assignment index out of range的解决方法
class stack: def __init__(self): self.num = 0 self.elem=[] def isEmoty(self): if self.num == 0: prin ...