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

初学c语言16(内存函数)

1.memcpy

形式:

功能:完成内存块拷贝(所以可拷贝任何类型的数据)

过程:从source开始拷贝num个字节的数据到destination指向的空间里

返回值:返回目标空间的起始地址

应用:

模拟实现:

代码:

#include <stdio.h> 
void* my_memcpy(void* des, const void* src, size_t num)
{char* ret = (char*)des;while (num--){*(char*)des = *(char*)src;((char*)des)++;((char*)src)++;}return ret;
}
int main()
{float arr[] = { 1.1f,3.3f,2.2f,4.4f};float arr1[20] = { 0 };my_memcpy(arr1, arr, 8);return 0 ;
}

注意:

该模拟实现的函数不可以处理重叠的部分

例子:

原因:重叠部分拷贝过程中被改为1,2了

二.memmove

形式:与memcpy一样

差异:memmove处理的源内存块和目标内存块是可以重叠的

应用:

注意:

memcpy也可以完成

模拟实现:

代码:

#include <stdio.h>  
void* my_memmove(void* des, const void* src, size_t num)
{char* ret = des;while (num--){if (des < src){*(char*)des = *(char*)src;des = (char*)des + 1;src = (char*)src + 1;}else{*((char*)des + num) = *((char*)src + num);}}return ret;
}
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr+2, arr, 20);return 0 ;
}

结果和解释:

三.memset

形式:

功能:设置内存块的内容,将内存中指定宽度设置特定的内容

头文件:string.h

参数:

ptr:地址,为要设置内存块的起始地址

value:为要设置的特定的内容,但会将value值转换为unsigned char类型的数据进行设置,是以字节为单位设置内存的

num:设置内存的长度,单位字节

返回值:为要设置内存块的起始地址

应用:

注意:

这里不能将所有元素改为1,因为value是以字节为单位设置的

四.memcmp

形式:

功能:比较指定的俩块内存块内容

参数:

ptr1、ptr2:指针,指向待比较内存块

返回值:和strcmp一样

应用:

http://www.xdnf.cn/news/535159.html

相关文章:

  • 哈夫曼编码:数据压缩的优雅艺术
  • 【CodeBuddy 】从0到1,让网页导航栏变为摸鱼神器
  • 学习VS2022离线安装包的下载方法
  • unity UGUI虚线框shader
  • 无符号长整型数x的循环右移
  • Docker构建 Dify 应用定时任务助手
  • unity 第一人称控制器
  • std::ranges::views::as_const 和 std::ranges::as_const_view
  • ABAP创建类
  • 【Tools】VMware Workstation 17.6 Pro安装教程
  • windows使用ollama部署deepseek及qwen
  • SnapEdit安卓版:AI赋能,一键抠图与创意编辑
  • 创新点!贝叶斯优化、CNN与LSTM结合,实现更准预测、更快效率、更高性能!
  • 基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现
  • OpenWeatherMap API ,常见的方式来管理 API Key:
  • 系统思考:动态性复杂
  • 0519Java面试题总结
  • 网络漏洞扫描系统都有哪些类型?
  • PAW3950DM-T5QU游戏级光导航芯片
  • 博图1200硬件组态与启保停程序编写步骤详解
  • AM32电调学习解读九:ESC上电启动关闭全流程波形分析
  • 无人机遥控器光纤通信模块技术要点!
  • 前端(vue)学习笔记(CLASS 6):路由进阶
  • 公网ip是固定的吗?动态ip如何做端口映射?内网ip怎么让外网远程访问?
  • FastAPI自定义异常处理:优雅转换Pydantic校验错误
  • 【占融数科-注册/登录安全分析报告】
  • python里的\和/有什么区别
  • 汇编:电子计数器
  • SCT2A10一款4.5V-85V 0.6A 高效率同步可调频率的降压DCDC转换器
  • Kubernetes高阶使用指南:深入探索容器编排的艺术