struct Zio {
size_t n; /* bytes still unread */
const char *p; /* current position in buffer */
lua_Reader reader;
void* data; /* additional data */
lua_State *L; /* Lua state (for reader) */
};
int luaZ_fill (ZIO *z) {
....
z->n = size - 1;
z->p = buff;
return char2int(*(z->p++));
}
int luaZ_lookahead (ZIO *z) {
if (z->n == 0) {
if (luaZ_fill(z) == EOZ)
return EOZ;
else {
z->n++; /* luaZ_fill removed first byte; put back it */
z->p--;
}
}
return char2int(*z->p);
}
函数luaZ_fill从读取器中读取数据,但是为什么z->n = size - 1
需要-1,似乎unuseful.because函数luaZ_lookahead调用luaZ_fill放回了它。为什么代码不是这样写的:
int luaZ_fill (ZIO *z) {
....
z->n = size;
z->p = buff;
return char2int(*(z->p));
}
int luaZ_lookahead (ZIO *z) {
if (z->n == 0) {
if (luaZ_fill(z) == EOZ)
return EOZ;
}
return char2int(*z->p);
}
发布于 2020-10-17 17:08:27
如果你有一个数组,并且你想给它一个大小,比如:
int x = 10;
char arr[x - 1]
大家都知道arr从0到9开始,所以像上面的例子一样,如果你想创建一个数组,它的大小是10,所以你必须像这样做,除非你得到一个数组,它的大小是11,而不是10。arr[x - 1]
。
https://stackoverflow.com/questions/64400312
复制相似问题