当前位置: 首页 > news >正文

C语言中memmove和memcpy

1、memmove()函数

void *memmove(void *str1, const void *str2, size_t n);

str2所指向的存储区的前n个字节复制到str1所指向的存储区

memmove()允许str1str2所指向的存储区重叠”。通过检查地址关系,自动选择复制方向(从前往后或从后往前),确保数据复制的正确性。

注意:

1)、str1所指向的存储区必须至少有n个字节,否则,会引起内存溢出。

2)、当“str1str2所指向的存储区重叠”时,memmove()要比memcpy()能执行正确的拷贝。如果“str1str2所指向的存储区不重叠”,则memmove()和memcpy()拷贝的效果是一样的。

2、memmove复制浮点数

#include "string.h" //memmove()需要包含string.h头文件

void Test_memmove(void)

{

float buf1[10]={1.1,2.2,3.3,4.4,5.5,6.6,7.7,8.8,9.9,10.5};

//声明浮点数数组buf1[],并初始化

float buf2[10]={1.5,2.5,3.5,4.5,5.5};//声明浮点数数组buf2[],并初始化

memset(buf1,'\0',sizeof(buf1));//将buf1[]设置为0

memmove(buf1,buf2,5*sizeof(float));

//将buf2[]中的前5个浮点数拷贝到buf1[]中

}

3、C语言中memmove和memcpy的区别

#include "string.h" //strcpy(),memcpy()和memmove()需要包含string.h头文件

void Test_memmove(void)

{

char buf[11];

//声明char型数组buf[]

strcpy(buf,"abcdefg");

memcpy(&buf[1], &buf[0], 9);

//将"abcdefg\0\0"拷贝到起始的地址为&buf[1]中的存储单元中

printf("%s\r\n",&buf[1]);//串口输出"abcddfg",出现拷贝错误

strcpy(buf,"abcdefg");

memmove(&buf[1], &buf[0],9);

//将"abcdefg\0\0"拷贝到起始的地址为&buf[1]中的存储单元中

printf("%s\r\n",&buf[1]);//串口输出"abcdefg",拷贝正确

//通过比较,我们发现dest>src,发现memcpy()有问题,而memmove()执行了正确的拷贝

strcpy(buf,"abcdefg");

memcpy(&buf[0], &buf[1], 9);

//将"bcdefg\0\0\0"拷贝到起始的地址为&buf[1]中的存储单元中

printf("%s\r\n",&buf[0]);//串口输出"bcdefg",拷贝正确

strcpy(buf,"abcdefg");

memmove(&buf[0], &buf[1],9);

    //将"bcdefg\0\0\0"拷贝到起始的地址为&buf[1]中的存储单元中

printf("%s\r\n",&buf[0]);//串口输出"bcdefg"

//通过比较,我们发现dest<=src,发现memcpy()和memmove()均能执行正确的拷贝

}

相关文章:

  • [2025常问知识点]关于spring的ioc和aop?ioc和DI的区别,ioc是怎么实现的?aop是怎么实现的?
  • 主自开发光枪鼠标模拟器实战,使用micro pro板子方式
  • 【Vue】跨平台开发(Electron、Quasar)
  • 蓝桥杯 摆动序列
  • 冒泡排序详解:从零理解其核心思想与循环设计原理
  • 微软发布了面向0基础的AI agent新课
  • 人工智能——层次聚类算法
  • Seata RM的事务提交与回滚源码解析
  • Linux运维——Vim技巧一
  • 5月3日星期六今日早报简报微语报早读
  • AWS云服务深度技术解析:架构设计与最佳实践
  • 华为云Astro轻应用自定义连接器对接OBS云对象存储操作指南
  • 26考研 | 王道 | 计算机网络 | 第三章 数据链路层
  • C++负载均衡远程调用学习之订阅功能与发布功能
  • AIGC算力消耗白皮书:Stable Diffusion vs Midjourney的架构成本差异
  • 202553-sql
  • 2025年美赛成绩查询
  • 六大机器学习算法全解析:企业级开发实战与深度理解
  • Day109 | 灵神 | 148.排序链表 | 归并排序
  • AI模型评估:准确率、召回率与F1分数的实战应用
  • 胡祥|人工智能时代:文艺评论何为?
  • 机关食堂向游客开放的重庆荣昌区,“消费市场迎来历史性突破”
  • 沪幼升小网上报名明起开始,是否参与民办摇号怎么定?
  • 超越关税陷阱,不遗余力塑造产业的长期竞争力
  • 局势紧张之际,伊朗外长下周访问巴基斯坦和印度
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员回信