为什么我们写 *bufp = buf 因为两者都是数组所以在我看来它应该是:
static char bufp = buf;
*bufp 如何“知道”从哪个位置开始显示?它不会以任何方式初始化为零。分配
buf
给后,bufp
我希望在返回行中它以最后输入的字符开头。此处使用 unsigned char 修饰符是否只是为了省略作为输入的情况-在大多数系统上
-1
意味着?EOF
#include "syscalls.h"
/* getchar: simple buffered version */
int getchar(void)
{
static char buf[BUFSIZ];
static char *bufp = buf; /* [1] */
static int n = 0;
if (n == 0) { /* buffer is empty */
n = read(0, buf, sizeof buf);
bufp = buf; /* ? [1] here it is written like in my question so which is true ? */
}
return (--n >= 0) ? (unsigned char) *bufp++ : EOF; /* [2] & [3] */
}