C语言-内存操作函数

本文介绍了C语言中用于内存操作的四个关键函数:memcpy用于无重叠区域的内存复制,memmove处理可能重叠的内存区域,memcmp用于比较内存区域,memset则用于设置内存区域的值。详细讲解了每个函数的工作原理和实现方式。

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

memcpy,memmove,memcmp,memset

void * memcpy (void * dest,const void * src,size_t count);

将src所指地址之后的count个字节的内容复制到dest所指地址之后的count个字节中。

模拟实现:

使用assert函数保证a与b不为NULL,需要#include<assert.h>使用。

地址加减,赋值时要进行强制类型转换,一个字节一个字节的访问。

此时的实现使用了最小单位(char代表1个字节),保证了数据不会丢失,但是使用void*类型的指针时,需要强制类型转换为char或者其他类型的指针再进行对应内存空间的数据操作。

memmove函数:

void * memmove (void * dest,const void * src,size_t count);

与memcpy不同的是,memmove的两个形参地址靠的非常近,使两个空间(dest到dest+count)

(src到src+count)有重叠的部分。这时就要考虑以什么方式来拷贝内容。

若dest<src,此时可以采取从前往后拷贝的方式避免src到srccount的数据被改动

而dest>src时则采用从后往前的拷贝方式避免src到srccount的数据被改动

实现:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值