c---内置函数模拟(memset,memcmp,memcpy,memmove)

void* my_memset(void* s1, int zifu, int num) {//引用string.h

assert(s1);

void* ret = &s1;

while (num--) {

*(char*)s1 = (char)zifu;

s1 = (char*)s1 + 1;

}

return ret;

}

int my_memcmp(const void* s1,const void* s2,int num) {

assert(s1 && s2);

while (num--) {

if (*(char*)s1 > *(char*)s2) {

return 1;

}

else if (*(char*)s1 < *(char*)s2) {

return -1;

}

s1 = (char*)s1 + 1;

s2 = (char*)s2 + 1;

}

return 0;

}

void* my_memmove(void* s1,const void* s2,int num) {

void* ret = &s1;

assert(s1 && s2);

if (s1 < s2) {

while (num--) {

*(char*)s1 = *(char*)s2;

s1 = (char*)s1 + 1;

s2 = (char*)s2 + 1;

}

}

else {

while (num--) {

*((char*)s1 + num) = *((char*)s2 + num);

}

}

return ret;

}

}void* my_memcpy(void* data1,const void* data2,int num) {

assert(data1 && data2);

void* ret = data1;

while (num--) {

*(char*)data1 = *(char*)data2;

data1 = (char*)data1 + 1;

data2 = (char*)data2 + 1;

}

return ret;

}

相关推荐
Lyyaoo.2 小时前
【JAVA基础面经】JVM的内存模型
java·开发语言·jvm
杨凯凡2 小时前
【017】泛型与通配符:API 设计里怎么用省心
java·开发语言
IT利刃出鞘2 小时前
Spring工具类--ObjectUtils的使用
java·后端·spring
MY_TEUCK8 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
三毛的二哥8 小时前
BEV:典型BEV算法总结
人工智能·算法·计算机视觉·3d
我爱cope9 小时前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
南宫萧幕9 小时前
自控PID+MATLAB仿真+混动P0/P1/P2/P3/P4构型
算法·机器学习·matlab·simulink·控制·pid
朝新_9 小时前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
RH23121110 小时前
2026.4.16Linux 管道
java·linux·服务器
zmsofts10 小时前
java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透
java·面试·mybatis