这四个内存操作函数都是以字节为单位来作用的。由于参数为void*,所以也可以操作int型、浮点型等数组,需要头文件#include<string.h>。
memcpy
void* memcpy (void* start1, const void* start2, size_t num):此函数用于将从str2 开始后num个字节的内容覆盖到以str1起点的后面的num个内存块,该函数遇到'\0'不会停下来,返回值是start1最初的位置。若str2后面的num个内存同str1后面有重叠,此时将会产生未定义的结果。
memmove
void* memmove(void* start1, const void* start2, size_t num):该函数功能同memcpy ,用于将从str2 开始后num个字节的内容覆盖到以str1起点的后面的num个内存块,该函数遇到'\0'不会停下来,返回值是start1最初的位置。但遇到内存重叠仍然能够进行理想覆盖,上面的例子最后的结果将会是:
memset
void memset(void* str, int data, size_t num):该函数用于将以str为起点的后面的num个字节的内容修改为data,返回值是str最初的位置。
memcmp
int memcmp(const void* str1, const void* str2, size_t num):该函数类似于strcnmp,但比较的是分别以str1、str2为起点的后面的num个字节的内容,返回值内容同strncmp一样: