内存操作函数

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值