深度剖析 string —— memset memcmp

📅 2026/8/13 16:44:46
深度剖析 string —— memset  memcmp
系列文章目录深度剖析strcat strncat深度剖析strchr strstr深度剖析strcmp strncmp深度剖析strcpy strncpy深度剖析strlen strtok深度剖析memcpy memmove深度剖析memset memcmp文章目录系列文章目录前言一、memset1.调用结构2.使用详解3.源码剖析二、memcmp1.调用结构2.使用详解3.源码剖析前言库函数string是我们经常使用也是非常重要的代码我将会对常用的函数的用法和实现原理进行深度剖析一、memset1.调用结构void*memset(void*str,intnum,size_tlen);2.使用详解memset对每个字节进行初始化原理详解:以字节为单位设置内存每个字节设置为一个值设置len个字节3.源码剖析void*Memset(void*str,intnum,size_tlen){//(变量, 值, 字节)//以字节为单位设置内存 每个字节设置为一个值设置n个字节assert(str);//防止传入空指针char*startstr;//记录起始位置的地址while(len--){//对每个字节进行初始化*(char*)strnum;str(char*)str1;}returnstart;//返回起始位置的地址}二、memcmp1.调用结构intmemcmp(voidconst*s1,voidconst*s2,intlen);2.使用详解memcmp比较从 s1 和 s2 指针开始的 num 个字节原理详解:内存比较一个字节一个字节比较判断每个字节在内存中存储的值是否相等第一个字符串 第二个字符串则返回 大于0 的数字第一个字符串 第二个字符串则返回 0第一个字符串 第二个字符串则返回 小于0 的数字3.源码剖析intMemcmp(voidconst*s1,voidconst*s2,intcount){//比较从 s1 和 s2 指针开始的 num 个字节assert(s1s2);//防止传入空指针while(count--*(char*)s1*(char*)s2*(char*)s1!\0*(char*)s2!\0){//判断每个字节存入内存中的值是否相等s1(char*)s11;s2(char*)s21;}return*(char*)s1-*(char*)s2;}