memcpy VS memmove

一、函数介绍

void * memcpy ( void * destination, const void * source, size_t num )

void * memmove ( void  * destination, const void * source, size_t num )

由函数的定义我们可以看出,memcpy与memmove的参数和返回类型是完全一样的

而且它们的功能也是极其相似的,都是将由source指向地址为起始地址的连续n个字节的数据复制到以destination指向地址为起始地址的空间内

返回值

返回类型为void*的,值与destination相同的指针

头文件:

二者的头文件均为#include<string.h>

二、注意点与区别

注:

1.这两个函数在遇到 '\0' 的时候并不会停下来。而是一定会拷贝完n个字节(即使后面的内存未被初始化)

        2.如果目标处已经有内容,则使用这两个函数后会覆盖原有内容。

区别:

1.c语言标准中未规定memcpy可以拷贝目标地址与目的地址有重合的内存,如果source和destination有任何的重叠,复制的结果都是未定义的。(即使有些编译器可以拷贝成功,也不推荐这么使用

2.而memmove函数处理的源内存块和目标内存块是可以重叠的。 如果源空间和目标空间出现重叠,就得使用memmove函数处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值