常见的内存函数memcpy,memmove,memcmp,memset

  • memcpy: void* memcpy(void* p1, void * p2,n)

p1是拷贝起始地址,p2是拷贝源地址,n代表拷贝字节个数; 因为指针是空类型,在函数内部拷贝时,会转换成char* ,所以每次 拷贝一个字节;

类似于strcpy,但是memcpy将直接从内存地址处拷贝内容;在Vs编译器中,memcpy可以实现重叠内存地址的拷贝,但是在C语言 的标准中,并没有这项规定,拷贝地址重叠的字符串通常使用memmove函数

  • memmove: void * memmove(void *p1,void*p2,n)

在函数内部拷贝方法分为两种,一种是当 p1=p2 ,数据向后拷贝;这样拷贝的方法不会因为重叠地址的问题导致拷贝异常; 如下图红色线条先拷贝;

  • memcmp: int memcmp(const void*p1,const void *pt2,size_t n)

比较内存中p1和p2前n个字节值的大小,如果第一个不相同元素的值 p1>p2, 返回值大于0,p1 于0,与strcmp不同的是,当strcmp遇到空字符后会停止比较,但是memcmp不会;

  • memset void*memset (void*ptr ,int value,size_t n)

将ptr地址处后n个字节修改为value的值;

 

你可能感兴趣的:(c++)