内存操作函数(memcpy、memmove、memcmp、memchr、memset)

本文介绍了内存操作函数的重要性,并详细讲解了memcpy、memmove、memcmp、memchr和memset这五个函数的用法和特点。memcpy用于不重叠区域的快速复制,memmove则能处理源和目标内存块重叠的情况。memcmp用于比较两块内存区域,memchr在字节数组中查找特定字符,memset则用于内存区域的初始化,需要注意它是按字节进行操作的。

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

存在内存操作函数的意义:对任何类型都适用,只要按照字节操作。

memcpy函数:


注:memcpy函数从src的位置向后复制count个字节到dest的内存位置;

这个函数在遇到'\0'不会停下来;

如果src和dest有任何的重叠,复制的结果都是未定义的。


有以上代码可知:memcpy可以将整个结构体拷贝给另一个结构体。当然也可以拷贝整个数组及其他。

memmove函数:


和memcpy的差别是memmove函数处理的源内存块和目标内存块是可以重叠的。

如果源空间和目标空间出现重叠,就得使用memmove函数处理。



memcmp函数:


比较从buf1和buf2指针开始的num个字节。


比较8个字节,因为'd'的ASCII码大于‘D’。

memchr函数:


在buf的count个字节查找字符c。


memset函数:


memet函数用于初始化。


但是如果设置为0呢?


可以看到可以初始化为0.

那如果设置为整数1呢?


16843009其实是1111,也就是说将每个元素的四字节全都初始化为1,因为0将四个字节初始化为0元素还是为0。

所以需要注意的是memset是按字节进行初始化的。

本篇博客里所有函数都是按字节操作的。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值