作业帮 > 综合 > 作业

怎么计算环形缓冲区长度

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 07:50:27
怎么计算环形缓冲区长度
定义了一个数组 Buff[200],想把它设计成环形缓冲区,
写指针:Ptr_ W
读指针:Ptr_R
问:这个读写之间的缓冲区的长度是怎么计算的呢,
用的c语言
两个函数未经调试

#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;
}