C语言(长期更新)第17讲

内存函数

     跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力博主主页:潼心1412o-CSDN博客


目录

  C语言(长期更新)第17讲

内存函数

知识回顾

17.1 memcpy

17.2 memmove

17.3 memset

17.4 memcmp


知识回顾

上节课我们学习了字符函数和字符串函数,今天我们来学习内存函数,坐稳了,我们发车,gogogo,出发喽!


17.1 memcpy

我们上节课学习了strcpy字符串拷贝函数,今天来学内存拷贝函数

memory即内存的意思

很好理解,就是从source指向的位置开始拷贝num个字节到destination所指向的内存中

值得注意的是,memcpy不会管\0的存在

听起来很简单对不对,让我们试着模拟实现一下

注意不能直接打印、

类型不一致,会出问题

下面我们看一下,如果我们想实现将arr1拷贝至arr1+1的位置

我们本想达到aab这样的效果,但是我们发现memcpy可以实现,但是我们自己写的模拟实现

my_memcpy就寄了

通过调试我们发现了问题所在,按理说源内存是不能修改的,但是我们通过对目标内存的修改把源内存改了,造成bug的出现

术业有专攻,这种问题就要交给专业的函数来做,即下面我们要介绍的memmove

17.2 memmove

memmove可用于处理重叠内存的拷贝问题

参数和返回类型都和memcpy一毛一样

进行模拟实现之前我们先来分析一下,有什么办法解决

通过总结各种情况,我们发现如下规律

  • dest在src所指向的内存范围前的,必须从前往后拷贝
  • dest在src所指向的内存范围内的,必须从后向前拷贝
  • dest在src所指向的内存范围后的,从前后拷贝都可

那我们写代码的时候就简单一点,把后两种情况合并一下

17.3 memset

内存设置函数,可讲指定内存设置为任意值

使用方法简单粗暴

17.4 memcmp

内存比较函数,这个可以对标strcmp

可以从比较两个指针向后的若干字节

p1>p2返回正数

p1==p2返回0

p1<p2返回负数


 好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~​​ 

博主主页:潼心1412o-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐