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++的返回值,指针的递增运算
2. –和++操作符以及length–和–length的差别
3. *p++的作用(其中包括*运算符和++运算符的优先级,*p++的返回值,指针的递增运算
对于1,大家可以参看”C programming language (K&R C)”这本书,对于2和3,可以参考“Pointers on C”第六章(如果我没记错的话),讲的很透彻,我就不再这里罗嗦了(讲了可能会越说越乱 :-~)。
No comments yet.