C语言:内存函数

一,memcpy函数

函数原型:

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

介绍:

总结:

·函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。

·这个函数在遇到 '\0' 的时候并不会停下来。

·如果source和destination有任何的重叠,复制的结果都是未定义的。

·对于重叠的内存,交给memmove来处理。

注意:

1,memcpy为内存拷贝函数,不在乎内存中储存的是什么类型的数据

2,memcpy不支持拷贝内存有重叠的函数

3,void*指针是无法被解引用的,强转时会因为数据类型所对应的字节数的差异发生错误

4,参数num指的是字节个数,不同数据类型字节大小不同

头文件:<string.h>

实例:

模拟实现:

二,memmove函数

 

函数原型:

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

介绍:

总结:

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

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

头文件: <string.h>

实例:

模拟实现:两种思路

思路1:从后往前拷贝

思路2:从前往后拷贝

图解:

三,memset函数

函数原型:

void * memset ( void * ptr, int value, size_t num );

介绍:

总结:

·memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。

头文件:<string.h>

实例:

四,memcmp函数

函数原型:

int memcmp ( const void * ptr1, const void * ptr2, size_t num );

介绍:

总结:

·⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节。

·注意返回值

头文件: <string.h>

实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值