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

深度剖析 string —— memset memcmp

系列文章目录

深度剖析:strcat & strncat
深度剖析:strchr & strstr
深度剖析:strcmp & strncmp
深度剖析:strcpy & strncpy
深度剖析:strlen & strtok
深度剖析:memcpy & memmove
深度剖析:memset & memcmp


文章目录

  • 系列文章目录
  • 前言
  • 一、memset
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析
  • 二、memcmp
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析

前言

库函数string是我们经常使用也是非常重要的代码,我将会对常用的函数的用法和实现原理进行深度剖析


一、memset

1.调用结构

void*memset(void*str,intnum,size_tlen);

2.使用详解

memset:对每个字节进行初始化

原理详解:

  1. 以字节为单位设置内存
  2. 每个字节设置为一个值
  3. 设置len个字节

3.源码剖析

void*Memset(void*str,intnum,size_tlen){//(变量, 值, 字节)//以字节为单位设置内存, 每个字节设置为一个值,设置n个字节assert(str);//防止传入空指针char*start=str;//记录起始位置的地址while(len--){//对每个字节进行初始化*(char*)str=num;str=(char*)str+1;}returnstart;//返回起始位置的地址}

二、memcmp

1.调用结构

intmemcmp(voidconst*s1,voidconst*s2,intlen);

2.使用详解

memcmp:比较从 s1 和 s2 指针开始的 num 个字节

原理详解:

  1. 内存比较一个字节一个字节比较
  2. 判断每个字节在内存中存储的值是否相等
  3. 第一个字符串 > 第二个字符串,则返回 大于0 的数字
  4. 第一个字符串 = 第二个字符串,则返回 0
  5. 第一个字符串 < 第二个字符串,则返回 小于0 的数字

3.源码剖析

intMemcmp(voidconst*s1,voidconst*s2,intcount){//比较从 s1 和 s2 指针开始的 num 个字节assert(s1&&s2);//防止传入空指针while(count--&&*(char*)s1==*(char*)s2&&*(char*)s1!='\0'&&*(char*)s2!='\0'){//判断每个字节存入内存中的值是否相等s1=(char*)s1+1;s2=(char*)s2+1;}return*(char*)s1-*(char*)s2;}
http://www.jsqmd.com/news/1386192/

相关文章:

  • 江门开平DHL/UPS/FedEx/TNT国际快递:13500091568上门取件 - 烟雾弥漫L
  • 2026北京靠谱装修公司推荐,怎么避坑? - 代码装修
  • 如何使用ProGuard压缩、优化和混淆Java应用:从入门到精通
  • 从SEO到GEO,传统代运营公司为什么集体掉队?2026年真正懂AI搜索的玩家还剩几家 - 品牌推荐大师
  • 微信聊天记录导出工具终极指南:免费备份你的数字记忆
  • UniApp自定义返回与物理返回键拦截实战指南
  • 从Loop到Graph:AI时代计算范式的迁移与实战指南
  • 南京正规装修公司参考:资质、口碑、施工服务一篇看明白 - 官方资讯
  • 射雕武功排名
  • Source Sans 3 开源字体完整实战指南:从选字纠结到落地页上线
  • easy-rsa 证书签发避坑指南:新手最容易踩的 4 个坑与一次性排解法
  • 品级硅胶烘焙模具定制_耐高温防发黄易脱模_广东源头工厂代工 - 大风02
  • MulimgViewer多图像浏览器实战:一次并排看几十张图,图像对比与拼接效率立翻十倍
  • 终极Windows防撤回指南:RevokeMsgPatcher让重要消息无处遁形
  • 2026年8月普洱漏水维修攻略!梅雨季残留潮湿和汛期多雨,房屋修缮解决沉降发霉渗水难题 - 聪居到家
  • 2026年AI编程为什么从「选最强模型」转向「选对模型」?
  • 南京热门装修公司到底哪家性价比高?这份对比帮你理性选择 - 官方资讯
  • 卷积神经网络(CNN)核心原理、经典架构演进与实战指南
  • LoongCollector:高性能运维数据采集器的稳定性与性能设计实践
  • 电脑卡顿别急着换机:Mem Reduct 内存清理工具快速上手指南
  • Node.js构建微信健康管理小程序全栈实践
  • ComfyUI中文工作流完全指南:20+专业工作流一键配置,轻松掌握AI绘画全流程
  • 2026年8月丽江漏水维修攻略!梅雨季残留潮湿和汛期多雨,房屋修缮解决沉降发霉渗水难题 - 聪居到家
  • 3大招聘平台智能时间显示插件:终结无效投递的终极解决方案
  • 3分钟搞定!Windows防撤回神器RevokeMsgPatcher完整指南
  • 【花雕动手做】30A双路双向有刷电调差速小船坦克双电机履带车2S-4S锂电池
  • T315I突变白血病患者的“终极武器“:普纳替尼如何让耐药癌细胞重新“投降“?
  • IIS部署PHP网站全攻略:FastCGI配置、性能调优与故障排查
  • 南京装修怎么选不踩坑?这份口碑装修公司清单请收好 - 官方资讯
  • Claudebot与OpenClaw技术栈解析:智能对话与自动化实践