c语言memory_copy函数,C语言-内存函数的实现(二)之memmove

本文介绍了C语言中的memmove函数,用于处理内存块的移动,特别是当源和目标内存区域有重叠时。通过示例和代码解释了为何需要memmove以及如何实现该函数,强调了其与memcpy的区别在于处理重叠区域的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于如何实现memmove,即内存移动,就是......

C语言中的内存函数有如下这些memcpy

memmove

memcmp

memset

下面看看memmove函数

memmove

为什么会需要memmove函数?int main()

{

int arr[] = { 1,2,3,4,5,6,7,8,9,10 };

int i = 0;

// 想把12345 拷贝到 34567上去

// 应该打印 1 2 1 2 3 4 5 8 9 10

my_memcpy(arr + 2, arr, 20);

for (i = 0; i 

{

printf("%d ", arr[i]);

}

// 但是输出 1 2 1 2 1 2 1 8 9 10

return 0;

}

上面会输出 1 2 1 2 1 2 1 8 9 10,我们来看看为什么会出现这样的结果。

我这里画了张图,方便理解。

92ba77e1c0d02ddbd197df52ce740508.png

因为拷贝的地方重叠了,使原来的数据(3 4 5)被覆盖了,导致最后出来的结果不是我们想要的。

也就是说,如果拷贝的地方重叠了,那么就会出现这种情况。

那么如何解决呢&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值