C/C++---memset、memcpy、memcmp函数简介

1、头文件

C语言:#include

C++:#include

2、memset

函数原型

void * memset(void * Dst, int Val, size_t Size);

函数的功能:在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方。

注意事项

第一:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。

第二:函数中Val实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节,比如int a[5]赋值memset(a,-1,sizeof(int )*5)与memset(a,511,sizeof(int )*5) 所赋值的结果是一样的都为-1;因为-1的二进制码为(11111111 11111111 11111111 11111111)而511的二进制码为(00000000 00000000 00000001 11111111)后八位都为(11111111),所以数组中每个字节,因此无论ch多大只有后八位二进制有效,而后八位二进制的范围在(0~255)中。

3、memcpy

函数原型

void * memcpy(void * Dst,const void * Src,size_t Size);

函数的功能:从源内存地址的起始位置开始拷贝Size个字节到目标内存地址中,即从源Src中拷贝n个字节到目标Dst中。

注意事项:

1.source和destin所指的内存区域可能重叠,但是如果Src和Dst所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前不被覆盖。而使用memmove可以用来处理重叠区域。函数返回指向Dst的指针。

2.如果目标数组Dst本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖Size)。如果要追加数据,则每次执行memcpy后,要将目标数组地址增加到你要追加数据的地址。

注意:Src和Dst都不一定是数组,任意的可读写的空间均可

4、memcmp

函数原型

int memcmp(const void * Buf1,const void * Buf2,size_t Size);

函数的功能:把存储区 Buf1和存储区 Buf2 的前 Size 个字节进行比较,该函数是按字节比较的。

返回值 < 0

Buf1小于 Buf2

返回值 > 0

Buf2 小于 Buf1

返回值 = 0

Buf1等于 Buf2

4、memmov

void * memmove(void * Dst, const void * Src, size_t Size);

函数的功能:用于拷贝字节,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,但复制后源内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同。

你可能感兴趣的:(库函数)