mem系列函数学习总结

1.memset

声明:

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

参数:

dest:指向预设置的内存空间的指针;

c:拷贝进内存空间的值;

count:设置内存空间的字节数大小。

函数作用:

将指定大小的内存空间中的值均设置为c值。

返回值:

返回一个指向目标存储区dest的指针。

2.memcpy

声明:

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

参数:

dest:指向存放复制内容的内存空间首地址的指针;

src:指向被复制内容的内存空间首地址的指针;

count:复制内容的最大字节数。

函数作用:

将src中的内容按字节挨个复制到dest中。

返回值:

返回一个指向目标存储区dest的指针。

3.memccpy

声明:

void *memccpy(
   void *dest, 
   void *src,
   unsigned char ch,
   unsigned int count
);

参数:

dest:指向存放复制内容的内存空间首地址的指针;

src:指向被复制内容的内存空间首地址的指针;

ch:停止字符,复制过程中str2遇到此字符后停止复制;

count:复制内容的最大字节数。

函数作用:

由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符ch则停止复制。

返回值:

返回指向字符ch后的第一个字符的指针,如果src前count个字节中不存在ch则返回NULL。

4.memcpy_s

声明:

errno_t memcpy_s(
   void *dest,
   size_t numberOfElements,
   const void *src,
   size_t count 
);

参数:

dest:指向存放复制内容的内存空间首地址的指针;

numberOfElements:dest所指内存空间的缓冲区大小,实际复制的字节数上限;

src:指向被复制内容的内存空间首地址的指针;

count:复制内容的期望字节数大小。

函数作用:

由src所指内存区域复制不多于count个字节到dest所指内存区域,但是count不能大于numberOfElements。这样可以确保dest所指内存空间的数据安全。

返回值:

一个整型值(errno_t),用来判断复制是否完成。0表示成功。

5.memcmp

声明:

int memcmp(
   const void *buf1,
   const void *buf2,
   size_t count
);

参数:

buf1:指向欲比较的第一个缓冲区的指针;

buf2:指向欲比较的第二个缓冲区的指针;

count:比较的字节数大小。

函数作用:

按字节依次比较两个缓冲区的数据大小。

返回值:

一个整型:<0 表示按字节比较 buf1 < buf2;

                  =0 表示按字节比较 buf1 = buf2;

                  >0 表示按字节比较 buf1 > buf2

6.memchr

声明:

void *memchr(
   const void *buf,
   int c,
   size_t count
); // C only

void *memchr(
   void *buf,
   int c,
   size_t count
); // C++ only

const void *memchr(
   const void *buf,
   int c,
   size_t count
); // C++ only

参数:

buf:指向欲查找内容的缓冲区的指针;

c:欲查找的字符;

count:查找的字符数。

函数作用:

在一个缓冲区中查找指定大小区间里是否存在指定字符c。

返回值:

查找成功则返回指向c值的第一个指针,查找失败则返回NULL。

7.memmove

声明:

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

参数:

dest:指向存放复制内容的内存空间首地址的指针;

src:指向被复制内容的内存空间首地址的指针;

count:复制内容的最大字节数。

函数作用:

将src中的内容按字节挨个复制到dest中。

返回值:

返回一个指向目标存储区dest的指针。

*注意:memmove与memcpy的区别:

当复制的内存空间与被复制的内存空间发生局部重叠时,memmove可以保证拷贝内容正确并成功覆盖。另外在高级VS版本中,两者在内部实现上已经一致。

8.memmove_s

声明:

errno_t memmove_s(
   void *dest,
   size_t numberOfElements,
   const void *src,
   size_t count
);

参数:

dest:指向存放复制内容的内存空间首地址的指针;

numberOfElements:dest所指内存空间的缓冲区大小,实际复制的字节数上限;

src:指向被复制内容的内存空间首地址的指针;

count:复制内容的期望字节数大小。

函数作用:

由src所指内存区域复制不多于count个字节到dest所指内存区域,但是count不能大于numberOfElements。这样可以确保dest所指内存空间的数据安全。

返回值:

一个整型值(errno_t),用来判断复制是否完成。0表示成功。

*注意:memmove_s与memcpy_s的区别:

当复制的内存空间与被复制的内存空间发生局部重叠时,memmove_s可以保证拷贝内容正确并成功覆盖。另外在高级VS版本中,两者在内部实现上已经一致。

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值