幸福婚礼,哈尔滨西客站,三个一切
之前我们实现了memmove、memcpy函数进行内存拷贝,仅限我们实现memset与memcmp函数进行内存初始化和内存比较的功能。memset(void*,int,size_t)其功能试讲传递进来的类型用整形来初始化n个单位,核心也是对强制类型转换的理解与运用,代码如下:
void*my_memset(void*str, int set, size_t count) { assert(str); void*p = str; while (count--) { *(int*)str = set; str = (int*)str + 1; } return p; }
memcmp也是一样的道理,代码如下:
int my_memcmp(void*buf1, void*buf2, size_t count) { assert(buf1); assert(buf2); while (count--) { if (*(char*)buf1 == *(char*)buf2) { buf1 = (char*)buf1 + 1; buf2 = (char*)buf2 + 1; } else { if (*(char*)buf1 > *(char*)buf2) { return 1; } else { return -1; } } } return 0; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论