怎么计算环形缓冲区长度定义了一个数组 Buff[200],想把它设计成环形缓冲区,写指针:Ptr_ W读指针:Ptr_R问:这个读写之间的缓冲区的长度是怎么计算的呢,用的c语言
来源:学生作业帮助网 编辑:作业帮 时间:2024/12/01 10:10:53
怎么计算环形缓冲区长度定义了一个数组 Buff[200],想把它设计成环形缓冲区,写指针:Ptr_ W读指针:Ptr_R问:这个读写之间的缓冲区的长度是怎么计算的呢,用的c语言
怎么计算环形缓冲区长度
定义了一个数组 Buff[200],想把它设计成环形缓冲区,
写指针:Ptr_ W
读指针:Ptr_R
问:这个读写之间的缓冲区的长度是怎么计算的呢,
用的c语言
怎么计算环形缓冲区长度定义了一个数组 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;
}