Skip to content

bzero.c源码注释

bzero函数的作用是向一个字符串写入某个指定字节的空字符’\0’,一般用于把一个字符串置0。类似memset。函数原型为:

SYNOPSIS
#include 
void
bzero(void *b, size_t len);

DESCRIPTION
The bzero() function writes len zero bytes to the string b. If len is zero, bzero() does nothing.

源代码:

#if !defined(_KERNEL) && !defined(_STANDALONE)
#include 
#else
#include <lib/libkern/libkern.h> #endif

/*
* bzero -- vax movc5 instruction
*/
void
bzero(void *b, size_t length)
{
char *p;

for (p = b; length--;)
*p++ = '\0';
}

只有短短的三行,实现的非常简洁。
bzero的介绍中提到,如果指定的字节数为0,那么bzero什么也不做。对于这个条件的判断隐含中for循环当中:如果length变量为0,则length–返回0(而不是-1),那么循环退出,什么也不做。
读懂这一段代码需要了解:

1. for循环的执行过程
2. –和++操作符以及length–和–length的差别
3. *p++的作用(其中包括*运算符和++运算符的优先级,*p++的返回值,指针的递增运算

对于1,大家可以参看”C programming language (K&R C)”这本书,对于2和3,可以参考“Pointers on C”第六章(如果我没记错的话),讲的很透彻,我就不再这里罗嗦了(讲了可能会越说越乱 :-~)。

Avatar

专业Linux/Unix/Windows系统管理员,开源技术爱好者。对操作系统底层技术,TCP/IP协议栈以及信息系统安全有强烈兴趣。电脑技术之外,则喜欢书法,古典诗词,数码摄影和背包行。

No comments yet.

Leave a Reply

SidebarComments (0)