您的位置:首页 > 其它

内存操作函数memcpy等的用法解析

2017-10-26 14:23 232 查看
1. memcpy

函数原型

void *memcpy(void *dst, const void *src, size_t size);


使用说明:将一块内存的数据复制到另一块内存。当两块内存重叠的时候,memcpy就不能保证拷贝正确。

2. memmove

函数原型

void *memmove(void *dst, const void *src, size_t size);


使用说明:可以拷贝内存重叠的,也可以拷贝不重叠的。

3. memset

函数原型

void* memset(void *dest,int c,size_t size);


使用说明:给出内存的起始地址dest,将从起始地址开始的size个字节赋值为字符c。

问题:

为什么要写成void型指针呢?

主要是为了可以接收各种类型的指针,因为我们有时想拷贝的区域是存放整 形数的,有时想拷贝的区域是存放字符串的,我们总不能根据内存区域数据的类型经常改函数参数吧,这样得有多麻烦呀~所以用void*就比较好~

函数的返回值是void*类型,这一点类似上边的参数。

另外需要注意的是,void型的指针不能进行自加操作,也不能进行解引用,所以函数中都进行了强制类型转化。因为操作过程中是一个字节一个字节进行,所以强制转化成char *。比如:

void *p;
p++;   //错误
*p = 1;//错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: