bzero 和memset的区别

bzero 和memset的区别bzero 原型 externvoidbz void s intn 用法 include 功能 置字节字符串 s 的前 n 个字节为零且包括 0

大家好,欢迎来到IT知识分享网。

bzero

  原型:extern void bzero(void *s, int n);

  用法:#include <string.h>

  功能:置字节字符串s的前n个字节为零且包括‘\0’。

  说明:bzero无返回值,并且使用strings.h头文件,strings.h曾经是posix标准的一部分,但是在POSIX.1-2001标准里面,这些函数被标记为了遗留函数而不推荐使用。在POSIX.1-2008标准里已经没有这些函数了。推荐使用memset替代bzero。



 menset
  void *memset(void *s, int ch, size_t n);

  函数解释:将s中前n个字节替换为ch并返回s;

  memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

  常见的三种错误

  第一: 搞反了ch 和 n的位置.

  一定要记住 如果要把一个char a[20]清零, 一定是 memset(a, 0, 20)

  而不是 memset(a, 20, 0)

  第二: 过度使用memset, 我想这些程序员可能有某种心理阴影, 他们惧怕未经初始化的内存, 所以他们会写出这样的代码:

  char buffer[20];

  memset(buffer, 0, sizeof((char)*20));

  strcpy(buffer, “123”);

  这里的memset是多余的. 因为这块内存马上就被覆盖了, 清零没有意义.

  第三: 其实这个错误严格来讲不能算用错memset, 但是它经常在使用memset的场合出现

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118538.html

(0)
上一篇 2025-11-12 14:15
下一篇 2025-11-12 14:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信