一,memcpy函数
函数原型:
void * memcpy ( void * destination, const void * source, size_t num );
介绍:
总结:
·函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。
·这个函数在遇到 '\0' 的时候并不会停下来。
·如果source和destination有任何的重叠,复制的结果都是未定义的。
·对于重叠的内存,交给memmove来处理。
注意:
1,memcpy为内存拷贝函数,不在乎内存中储存的是什么类型的数据
2,memcpy不支持拷贝内存有重叠的函数
3,void*指针是无法被解引用的,强转时会因为数据类型所对应的字节数的差异发生错误
4,参数num指的是字节个数,不同数据类型字节大小不同
头文件:<string.h>
实例:
模拟实现:
二,memmove函数
函数原型:
void * memmove ( void * destination, const void * source, size_t num );
介绍:
总结:
·和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。
·如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。
头文件: <string.h>
实例:
模拟实现:两种思路
思路1:从后往前拷贝
思路2:从前往后拷贝
图解:
三,memset函数
函数原型:
void * memset ( void * ptr, int value, size_t num );
介绍:
总结:
·memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。
头文件:<string.h>
实例:
四,memcmp函数
函数原型:
int memcmp ( const void * ptr1, const void * ptr2, size_t num );
介绍:
总结:
·⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节。
·注意返回值
头文件: <string.h>
实例: