内存操作函数

上一期我们讲述了一些字符函数,这一期我们讲一些更深层的函数,内存操作函数。

头文件同样是<string.h>。

上一期链接:http://t.csdnimg.cn/jawYi

memcpy

由于传入的指针并不一定是字符了,memcpy的使用范围将比strcpy更为广泛。

需要注意的是,这里的num并不是元素个数,而是字节数,也就是说,如果对一个int数据传了三个字节,可能会减小其大小(而且这里的传入是按照小端存储的方式进行传入)

听起来似乎很厉害。

没错,它的确很厉害,但是安全性却远不如strcpy。

还记得strcpy里有一个必须保证目的地有足够大空间的要求吗?

memcpy无法做到这件事,换句话说,memcpy完全听你的,你说传多少个字节,我们就传多少个,根本不管对面能不能接受,硬撑也要让对面开辟出空间吃下,而且不会复制\0。

这也是内存操作函数比较麻烦的通病,很霸道。

memmove

memmove是memcpy的升级版,可以对空间上有重叠的两个字符串进行复制粘贴。

在模拟实现中,我们唯一需要注意的点是复制的方向。

如果是12345。

我从第一个字符开始粘贴到第三个字符。

很容易发现当复制第三个字符的时候,复制的是1而不是3,这个时候就需要反向复制,避免复制到重复字符。

memset

memset用于设置指定目的地、指定字节的内容。

memcmp

和strcmp类似,memcmp进行一个字节一个字节的比较。

内存操作函数还是建议自己实操感悟,类似于之前的字符串函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值