memcpy memmove

memcpy memmove

#include <stdio.h>
#include <string.h>
#include <stdint.h>
typedef   unsigned int      uint32_t  ;
typedef   unsigned short    uint16_t  ;
typedef   unsigned char     uint8_t  ;

/*万能打印 HEX*/
void G_print(void* A,uint8_t len)
{
  for(uint8_t i=0;i<len;i++)
        printf("%02X ",*( (unsigned char*)A+i   )    );  
  printf("\n");
}

uint8_t arr[5] = {1,2,3,4,5};
int main(void)
{
    G_print(arr,5);
    memcpy(&arr[1],&arr[2],3);
    G_print(arr,5);
    return 1;
}

从数组del一个成员!

 

变化1:

memcpy memmove

变化2

memcpy memmove

变化3:

memcpy memmove

 

参考:https://www.cnblogs.com/lyl-312/p/5514988.html

memcpy 和 memmove的差别:

memcpy memmove

memcpy memmove

memcpy memmove

 

上面代码测试的是第二种,一样的,我们换一下

uint8_t arr[5] = {1,2,3,4,5};
int main(void)
{
    G_print(arr,5);
    memmove(&arr[2],&arr[1],3);
    G_print(arr,5);
    return 1;
}
//01 02 03 04 05 
//01 02 02 03 04 

memcpy memmove

摆弄一下:

memcpy memmove

 

看看源码把!

上一篇:linux – memcpy memmove GLIBC_2.14 / 2.2.5的说明


下一篇:k8s服务暴露流程