完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
memcpy
memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 所需头文件:string.h 函数原型:void *memcpy(void *dest, const void *src, size_t n); int a=1000; int b=0; memcpy(&b,&a,4); printf("%dn",b); 在32位系统中,这里拷贝a的内容给b,打印输出b为1000 memmove memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。 所需头文件:string.h 函数原型:void *memmove(void *dest, const void *src, size_t n); 上面解释的头皮发麻,代码演示。 char s[]="Hello World"; memmove(s,s+6,5); printf("%sn",s); 第一种情况,从s+6内存地址的位置起拷贝5个字节(World)到s地址处,刚好可以覆盖Hello,所以打印输出World World。 char s[]="Hello World"; memmove(s,s+4,7); printf("%sn",s); 第二种情况,从s+4内存地址的位置起拷贝7个字节(o World)到s地址处,复制目标区域s[0]~s[6]的o World和源区域s[4]~s[10]的o World有重叠,复制后src内容会被更改,打印输出o Worldorld。 总结: 他们的作用是一样的,唯一的区别是,当内存发生局部重叠的时候,memmove保证拷贝的结果是正确的,memcpy不保证拷贝的结果的正确。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1792 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1626 浏览 1 评论
1094 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
732 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1682 浏览 2 评论
1943浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
740浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
577浏览 3评论
600浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
562浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 07:19 , Processed in 0.688396 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号