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:

变化2

变化3:

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

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 

摆弄一下:

看看源码把!

猜你喜欢

转载自blog.csdn.net/weixin_42381351/article/details/89353568
今日推荐