关于内存函数memcpy、memmove、memcmp

发布于 2023-12-28  74 次阅读


因为做题的时候出现了memcmp函数,但是不知道他的内涵,所以找密文的时候卡住了,现在来查一下它和与其相近函数的运用:

1.memcpy(string.h)

1.介绍:

memcpy函数为内存拷贝函数,既可以拷贝字符串,也可以拷贝整型数组、浮点型数组等,具有明显的优势void * memcpy (void * destination, const void * source,size_t num),

destination为目的地的空间,source为不可更改(const)的来源空间,num表示无符号的字节数。其主要的含义为将source内容拷贝到destination中,拷贝的num个字节数。其返回的类型、目的地、来源类型均为void* ,void*可以接收任意类型的参数。因为它可以拷贝多种不同的内容,运用单一的类型,限制了其拷贝的内容拉入。size_t表示无符号的整数。

返回的时候会返回目的地的起始位置的地址。

2.memove(string.h)

1.介绍:

memove函数为内存移动函数,也就是将来源空间内容移动到目的地的空间,就相当于拷贝void *memove (void * destination, const void * source , size_t num),

其参数类型和返回值和memcpy完全相同,其含义为将source(来源)前num个字节数空间的内容移动到destination(目的地)空间之中,和拷贝含义几乎相同。这就过多介绍了。其用法也基本相同,只不过,memmove函数可以处理重叠内存空间的拷贝。

3.memcmp(string.h)

1.介绍: memcmp函数为内存比较函数,与字符串比较函数strcmp函数相像,不同的是memcmp函数可以既可以比较整形、浮点型,也可以比较字符串。int memcmp (const void * ptrl, const void  ptr2, size_t num),

因为是比较函数,所以原来的空间内容是不可被修改的,只能用于比较,因此前两个参数都用了const做修饰。其可以接收任意类型的参数。其基本含义为比较两个空间前num个字节数内容大小,返回值类型为整形,若ptr1 > ptr2,则返回大于0的数字,若等于,则返回0,若小于,则返回小于0的数字。

参考博客:https://blog.csdn.net/cdnio/article/details/131844531


The world's full of lonely people afraid to make the first move.