1. 引文
c语言之所以被称为霸底层逻辑开发,就是因为其核心优势就是对内存的极致操控能力,我们对内存的处理还很浅显,接下来我们来了解一下内存函数。
2. memcpy
看到这个形式很难不想到strcpy吧,我们上文刚学过,这个功能确实有相同的地方。

这个也是拷贝但是这个语法更像strncpy,都可以控制拷贝的大小,strcpy只能拷贝字符串,memcpy则不关心内存中放的是什么,是拷贝内存块的,可以说是什么都可以拷贝。
这适用于没有内存重叠的情况。

拷贝只是进行了覆盖,覆盖了前面的5个元素,一共是20个字节的空间,拷贝的是整形所以20/4=5一共拷贝5个元素。
2. memmove
上面的只适用于内存没有重叠的情况,那当内存重叠的话,我们该适用怎么办呢?
就是memmove函数,适用于内存重叠的情况。也适用于内存没有重叠的情况。所以我们可以都适用memmove来实现内存拷贝。


造成这两种函数的差异就是因为函数的拷贝方式有所不同,memcpy是正向开始拷贝的,memmove则是反向开始拷贝的。
3. memset

用于将指定位置设置为特定内容,这里也是以字节为单位来设置内存块的大小的。

这里一定要注意valua会转换成unsigned char类型来进行设置。

这也就导致如果我们使用int来进行设置的话就会转换成unsigned char类型。
4. memcmp


内存块也是可以相互比较的,与strcmp有些相像,区别就是:

基本语法也是差不多的,

这里我们要注意一下,并不是一定要是数据类型的整数被,也可以是13这种数;memcmp是按字节比较的。
5. 总结
我们这一文与上一文字符函数和字符串函数有些点是相通的,函数名称也是有带你相似,我们完全可以一起记忆,方便发现其中的区别和使用环境,也方便思考其中的变化。
到此这篇关于c语言中的内存函数详解的文章就介绍到这了,更多相关c语言内存函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论