请教个关于环形缓冲区的问题

 我来答
vm...1@sina.com
2016-12-17 · 超过199用户采纳过TA的回答
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:270万
展开全部
  • 两个函数未经调试

  •  

  • #define MAXLEN 200

  • int Buff[MAXLEN];

  • int *Ptr_W = Buff; // 写指针初始化为Buff[0]

  • int *Ptr_R = NULL; // 读指针初始化为NULL

  •  

  • // 读数据。成功读出时,返回1,x存放读出的结果。不成功返回0,x的内容不可用

  • int ReadData(int Buff[],int *x) {

  •     if(Ptr_R == NULL || Ptr_R >= Ptr_W) return 0;

  •     *x = *Ptr_R;

  •     Ptr_R += Buff + (Ptr_R - Buff + 1) % MAXLEN;

  •     return 1;

  • }

  •  

  • // 写数据。成功写入时,返回。不成功返回0

  • int WriteData(int Buff[],int x) {

  •     if(Ptr_R == NULL) { // 初次写入

  •         Ptr_R = Buff;  // 初次写入时,附带完善读指针的初始化操作

  •         *Ptr_W++ = x;

  •         return 1;

  •     }

  •     if(Ptr_W == Ptr_R) return 0; // 缓冲区满

  •     *Ptr_W = x;

  •     Ptr_W += Buff + (Ptr_W - Buff + 1) % MAXLEN;

  •     return 1;

  • }

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式