环形缓冲区实质是一个数组.
开始时读指针和写指针均指向数组第一个元素.
buf是数组
1.初始化
w_pos=r_pos=buf;
2.写操作
buf[w_pos]=val;
w_pos=(w_pos+1)%len //len是buf数组长度
3.读操作
val=buf[r_pos]
r_pos=(r_pos+1)%len
4.判断环形缓冲区是否为空
r_pos==w_pos
5.判断环形缓冲区是否已满
(w_pos+1)%len==r_pos
注意:读之前判断是否为空,写之前判断是否已满.