C语言(长期更新)第17讲内存函数
这篇C语言教程第17讲介绍了内存操作函数。主要内容包括:1.memcpy内存拷贝函数及其使用限制;2.处理重叠内存拷贝的memmove函数及其实现原理;3.memset内存设置函数;4.memcmp内存比较函数。重点讲解了memcpy和memmove的区别,以及如何正确处理内存重叠情况。通过实例分析,展示了这些内存函数的具体应用场景和注意事项。
C语言(长期更新)第17讲
内存函数
跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。
博主主页:潼心1412o-CSDN博客
目录
知识回顾
上节课我们学习了字符函数和字符串函数,今天我们来学习内存函数,坐稳了,我们发车,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博客
更多推荐
所有评论(0)