本文转载自:http://chang6520.blog.163.com/blog/static/112665875201302843359715/

bzero 
原型: extern void bzero(void *s, int n); 
用法: #include <string.h>

功能:置字节字符串s的前n个字节为零。 
说明:bzero无返回值。 
举例: // bzero.c 
#include <syslib.h>
#include <string.h>
int main()

struct
{
int a;
char s[5];
float f;
} tt;
char s[20];
bzero(&tt,sizeof(tt)); // struct initialization to zero bzero(s,20);
clrscr();
printf("Initail Success");
getchar();
return 0;
}

======================================== 
memset 
原型:

extern void *memset(void *buffer, int c, int count); 
用法: #include <string.h>

功能:把buffer所指内存区域的前count个字节设置成字符c。 
说明:返回指向buffer的指针。 
举例: // memset.c
#include <syslib.h>
#include <string.h>
int main()

char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}

======================================= 
setmem 
原型:

extern void setmem(void *buf, unsigned int count, char ch); 
用法: #include <string.h>

功能:把buf所指内存区域前count个字节设置成字符ch。 
说明:返回指向buf的指针。 
举例: // setmem.c
#include <syslib.h>
#include <string.h>
int main()

char *s="Golden Global View";
clrscr();
setmem(s,6,'G');
printf("%s",s);
getchar();
return 0;
}
=======================================

综述:
bcopy和memcpy、bzero和memset、bcmp和memcmp的差别在哪里?
bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。

NetBSD的代码中有很多地方使用mem*(他们更偏爱mem*,以利于移植),即使内核也是如此,而FreeBSD的内核中则尽量避免使用(希望尽可能避免在内核中出现较多的C函数)。如果你提交代码的话需要注意这些约定。

在memset和bzero初始化数据间,我很多时候选择bzero, memset的一个缺点是第二个参数和第三个参数需要记忆,需要记住哪个是值和哪个是大小(如果不想查手册的话), 不可以弄错。

bzero()和memset()
今天用到一个字符数组初始化函数,bzero(),因为比较生疏,于是在查本地的一个C/C++函数库的时候并未见此函数,于是便觉得自己拥有的CHM版的库函数软件包有点山寨了,可是当自己调试程序的时候却发现此函数始终通不过编译。被逼上网查它们的区别,得答案如下:

C has memset(), the Berkeley UNIX C library has bzero(). They are not
identical, and bzero() pre dates memset() but is not widely available (since
it's not part of standard C).
在LINUX平台上是支持bzero的,但是其并不在ANSI C中定义,也就是不属于C的库函数.

==========================================================================

From CSDN:

【问】网上查了是 
#include <string.h> 
但是在vc6.0 和vs2005下还是报错,说bzero没有定义

【答】确实没有

可以自己定义一个

C/C++ code

#define bzero(a, b) memset(a, 0, b)

bzero()是在linux平台下用的,可以用memset()函数代替,这样就跨平台了。哈哈... 
实在要用就像楼上说的那样。

bzero, memset ,setmem 区别【转】的更多相关文章

  1. 【转】bzero, memset ,setmem 区别

    原文网址:http://blog.csdn.net/agathe/article/details/6066157 bzero  原型: extern void bzero(void *s, int n ...

  2. 转:BZERO()等的区别

    BZERO()等的区别 bzero  原型: extern void bzero(void *s, int n); 用法: #include <string.h> 功能:置字节字符串s的前 ...

  3. bzero()等的区别

    bzero  原型: extern void bzero(void *s, int n); 用法: #include <string.h> 功能:置字节字符串s的前n个字节为零.    说 ...

  4. ZeroMemory和memset的区别

    摘自百度百科,保存为学习使用 ZeroMemory,是美国微软公司的软件开发包SDK中的一个宏. 其作用是用0来填充一块内存区域. 声明 void ZeroMemory( PVOID Destinat ...

  5. fill与memset的区别

    fill 的头文件是<iostream> 命名空间是std: 在memset(a,0(-1),sizeof(a))全部初值定为0或-1时两者是没有多大区别; 但是在初值为其他值得时候就不同 ...

  6. strcpy、memcpy和memset的区别

    strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...

  7. fill和memset的区别

    https://blog.csdn.net/xs18952904/article/details/75195412 memset只能初始化成为0或者-1,其他都要用fill来完成. #include& ...

  8. fill,fill-n,memset的区别

    这里在网上搜集归纳了一个总结 memset函数 按照字节填充某字符 在头文件<string.h>中 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为 ...

  9. bzero 字符数组清零

    原来bzero()是这个功能,学习啦.下面的文章可以好好参考,出处:http://hi.baidu.com/wg_wang/item/5fa42c15c73b8efa9c778af8 bzero &a ...

随机推荐

  1. Ubuntu 16.04配置国内高速apt-get更新源

    https://www.linuxidc.com/Linux/2017-11/148627.htm Ubuntu 16.04下载软件速度有点慢,因为默认的是从国外下载软件,那就更换到国内比较好的快速更 ...

  2. Python 字典 setdefault() 方法

    描述 Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None. get() 和 setdefau ...

  3. 理解CopyOnWriteArrayList

    CopyOnWriteArrayList,顾名思义,Write的时候总是要Copy,也就是说对于任何可变的操作(add.set.remove)都是伴随复制这个动作的 A thread-safe var ...

  4. 2018中国(深圳)IT领袖峰会马化腾演讲全文《数字中国的机遇与探索》

    我们今天大会的主题是数字中国,也佩服我们吴鹰主席在十年前就想到发展的趋势,这么早就把我们联合会取名数字中国.昨天有一个闭门会议,有相当大的篇幅大家都谈了科技.谈创新,大家觉得科技的威力和优势越来越明显 ...

  5. [django]django的orm查询

    实体 实体 出版社 category 作者 tag 书 文章 先学习一下基础的增删查改 django orm增删改查: https://www.cnblogs.com/iiiiiher/article ...

  6. 顺序结构,判断结构 if,switch

    1:顺序结构:从上往下执行程序代码,为顺序结构 ---------------------------------------------------------------------- 2:判断结 ...

  7. [LeetCode] 383. Ransom Note_Easy tag: Hash Table

    Given an arbitrary ransom note string and another string containing letters from all the magazines, ...

  8. Redis的设计与实现——字典

    参考博客 绝大多数语言中的字典底层实现基本上都是哈希表.哈希表中用 “负载因子” 来衡量哈希表的 空/满 程度.为了让负载因子在一定的合理范围之内,提高查询的性能,一般的做法是让哈希表扩容,然后reh ...

  9. Linux系统——Nginx反向代理与负载均衡

    集群集群是指一组(若干个)相互独立的计算机,利用高速通信网路组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运用各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供 ...

  10. 论文笔记:语音情感识别(三)手工特征+CRNN

    一:Emotion Recognition from Human Speech Using Temporal Information and Deep Learning(2018 InterSpeec ...