1、memcpy使用和模拟实现
是针对内存块进行拷贝,从str2的位置开始向后复制num个字节的数据到str1内存位置
不适合重叠内存,如果str2和str1有任何的重叠,复制的结果都是未定义的;
遇到'\0'不会结束;
memcpy模拟实现
返回类型位是void*,所以将dest存起来,赋值给ret;
其中char*一次性访问一个字节,当如果为int*等,一次性访问4个字节,当字节为奇数时,将无法全部完整访问,而一个字节已经是最小的,最方便;
数组传参不一定是整型,void*方便传参;
2、memmove使用和模拟实现
• 和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。
memmove模拟实现
当dest在scr左边,从前向后拷
当dest在scr右边,从后向前拷
当不重叠的情况下,向前向后拷都可以
为了方便用从后往前
3.memset函数的使用
- str -- 指向要填充的内存块。
- c -- 要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式。
- n -- 要被设置为该值的字符数。
因为是以字节为单位设置,不是以元素为单位设置的
4.memcmp函数的使用
• ⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节
返回值:如果str1指向的内容>str2指向的内容 返回大于0的数;
str1指向的内容<str2指向的内容 返回大于0的数;
如果相等,返回0;