首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么lua luaZ_fill会这样读取数据

为什么lua luaZ_fill会这样读取数据
EN

Stack Overflow用户
提问于 2020-10-17 16:05:34
回答 1查看 52关注 0票数 0
代码语言:javascript
运行
复制
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放回了它。为什么代码不是这样写的:

代码语言:javascript
运行
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2020-10-17 17:08:27

如果你有一个数组,并且你想给它一个大小,比如:

代码语言:javascript
运行
复制
int x = 10;
char arr[x - 1]

大家都知道arr从0到9开始,所以像上面的例子一样,如果你想创建一个数组,它的大小是10,所以你必须像这样做,除非你得到一个数组,它的大小是11,而不是10。arr[x - 1]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64400312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档