C语言中常见的内存函数

目录

一.memcpy(内存拷贝)

二.memmove(内存移动)

三.memcmp(内存比较)

四.memset(内存设置)


四个函数的头文件都是#include<string.h>


一.memcpy(内存拷贝)

我们可以从下面的链接查到关于memcpy函数的具体介绍icon-default.png?t=N7T8https://legacy.cplusplus.com/reference/cstring/memcpy/?kw=memcpy

memcpy这个函数作用:

source指向的位置开始复制num个字节的数据到destination指向的内存中。

有一点需要注意,这个函数遇到'\0'是不会停止复制的,你让复制多少个字节,他就复制多少个字节。

下面是这个函数使用的一个例子:


memcpy的模拟:

我们可以参照cplusplus官方memcpy函数的格式进行模拟。

如下:

这个函数的模拟并不难,不过多讲解。


二.memmove(内存移动)

当我们了解了memcpy函数后,我们来思考下这个问题?

如果dest与src有重叠,我们模拟的memcpy函数还能起作用吗?

答案是不能。

事实上,当destination和source发生重叠时,使用memcpy函数拷贝的结果是未定义的。

此时我们就会使用系统自带的memmove函数这个函数是专门解决空间重叠的情况。

(在vs2022中,memcpy是可以实现重叠拷贝的,但不能保证所有的memcpy都可以。)


下面介绍memmove函数:

memmove函数介绍icon-default.png?t=N7T8https://legacy.cplusplus.com/reference/cstring/memmove/?kw=memmove这个函数的作用跟memcpy函数相似,只不过是专门解决重叠拷贝的情况。

使用例子:


memmove函数的模拟:

dest <= src时,我们采取顺序打印(以src的视角)不然重叠的部分会被覆盖。

dest > src时,我们采取逆序打印。


三.memcmp(内存比较)

memcmp函数介绍icon-default.png?t=N7T8https://legacy.cplusplus.com/reference/cstring/memcmp/?kw=memcmp注意,这里要比较的字节数是最多比较字节数。当前几次的比较已经出现结果,函数就不会继续比较下去了。

使用例子:


memcmp的模拟:


四.memset(内存设置)

这个函数是用来设置内存的的,以字节为单位。

从ptr指向的内存块的前num个字节设置为指定值。

使用例子:


memset的模拟:


写完了,拜拜,下期再见😏

摸鱼摸鱼😴✨🎞

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值