目录
一. memcpy 使用和模拟实现
1.1 函数定义
memcpy 函数是 C 语言标准库中的一个函数,定义在 <string.h>
头文件中。它用于从源内存地址的位置开始拷贝 n 个字节到目标内存地址的位置。memcpy
函数不检查源和目标内存区域是否重叠,也不关心数据的具体类型,只是简单地复制内存块。
dest
:目标内存地址的指针。
src
:源内存地址的指针。
n
:需要复制的字节数。
返回值:memcpy
函数返回目标内存地址的指针。
1.2 使用示例
这个示例展示了如何使用 memcpy
函数复制字符串,并验证了复制的结果。在实际编程中,memcpy
函数常用于复制内存块,如数组、结构体等。
1.3 模拟实现
二.memmove 使用和模拟实现
2.1 函数定义
memmove 函数是 C 语言标准库中的一个函数,用于复制内存块。与 memcpy 函数类似,memmove 也可以用来复制一块内存区域的内容到另一块内存区域,但它能正确处理源内存区域和目标内存区域重叠的情况。当源内存和目标内存重叠时,memmove 会确保源内存区域的内容在复制之前不会被覆盖,这是它与 memcpy 的主要区别。
memmove
函数的原型定义在 <string.h>
头文件中,如下所示:
dest
:指向用于存放复制内容的目标内存区域的指针。
src
:指向要复制的数据源的指针。
n
:要复制的字节数。
返回值:memmove
函数返回指向目标内存区域 dest
的指针。
2.2 使用示例
在这个例子中,memmove
函数用于将 src
字符串中的一部分复制到 dest
字符串的指定位置,即使源区域和目标区域有重叠也不会出错。
2.3 模拟实现
三.memset 函数的使用
3.1 函数定义
memset 函数是 C 语言标准库中的一个函数,用于给一块内存区域设置相同的值。这个函数定义在 <string.h>
头文件中。
s
:指向要填充的内存块的指针。
c
:要设置的值。虽然这个参数是 int
类型,但是 memset
实际上是按字节处理的,只会使用该值的低 8 位(即一个字节)。
n
:要被设置为字符 c
的字节数。
返回值:返回一个指向内存块 s
的指针。
3.2 使用示例
memset
函数通常用于初始化内存区域,比如将一个数组的所有元素都设置为 0 或 -1。由于 memset
是按字节操作的,所以它最适合用来设置字符数组或者将内存区域清零。
四.memcmp 函数的使用
4.1 函数定义
memcmp 函数是 C 语言标准库中的一个函数,用于比较两块内存区域的内容。这个函数定义在 <string.h>
头文件中。
s1
:指向第一块内存区域的指针。
s2
:指向第二块内存区域的指针。
n
:要比较的字节数。
返回值:
如果 s1
和 s2
的前 n
个字节完全相同,则返回 0
。
如果 s1
所指向的内存区域在前 n
个字节内,有字节小于 s2
所对应的字节,则返回小于 0
的值。
如果 s1
所指向的内存区域在前 n
个字节内,有字节大于 s2
所对应的字节,则返回大于 0
的值。
4.2 使用示例
memcmp
函数通过比较两块内存区域的每一个字节来判断它们是否相等,或者哪一块内存区域在字典序上更大。这个函数通常用于比较字符串、数组等内存块的内容。
后记
开学咯,兄弟们,卷起来!!!
共勉!!!