一、memcpy与memmove
1、memcpy
作用:从source的位置开始向后复制num个字节的数据到destination的内存位置。
注意:
- memcpy() 函数在遇到 ’\0’ 的时候不会停下来(strcpy字符串拷贝函数在遇到’\0’的时候会停下来);
- destination和source所指向的内容不能重叠,否则得不到想要的结果。
void* memcpy(void* destination,const void* source,size_t num);
2、memmove
2、memmove
作用:从source的位置开始向后复制num个字节的数据并将其移动到destination的内存位置。
注意:和memcpy()函数的区别就是memmove()函数处理的原内存块和目标内存块是可以重叠。
void* memmove(void* destination,const void* source,size_t num);
3、memove与memcpy的区别与重叠内存问题
memmove是memcpy的升级版,memmove是更加安全的。
详见:【C语言】浅谈memcpy与memmove 的区别_DanteIoVeYou的博客-CSDN博客
二、memcmp
作用:用于比较两个内存区域的内容。
int memcmp(const void * Buf1,const void * Buf2,size_t Size);
buf1:指向第一个内存区域的指针。
buf2:指向第二个内存区域的指针。
size:要比较的字节数。
- 如果返回值 < 0,则表示 str1 小于 str2。
- 如果返回值 > 0,则表示 str1 大于 str2。
- 如果返回值 = 0,则表示 str1 等于 str2。
三、memset
作用:内存赋值函数,用来给某一块内存空间进行赋值的;包含在<string.h>头文件中。
详解:将已开辟内存空间s的首n个字节的值设为值c。
注意:该函数是按一个字节一个字节来给数组或者是结构体赋值。
void *memset(void *s, int v, size_t n);
s 是数组名,或指向某一内在空间的指针;
v 为要填充的值;
n 为要填充的字节数;
如果是字符类型数组的话,memset可以随便用,但是对于int类型的数组,一般只用来清0或者填充-1,如果是填充其他数据就会出错。
四、参考内容
【C语言】浅谈memcpy与memmove 的区别_DanteIoVeYou的博客-CSDN博客
C语言memcpy,memmove,memcmp,memset函数_sheygshsi的博客-CSDN博客文章来源:https://www.toymoban.com/news/detail-629720.html
C/C++---memset、memcpy、memcmp函数简介_c/c++ 不同数组大小的memcpy_f斗牛士的博客-CSDN博客 文章来源地址https://www.toymoban.com/news/detail-629720.html
到了这里,关于memcpy、memmove、memcmp、memset函数的作用与区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!