#define BUFFER_SIZE 16
typedef struct {
unsigned int buffer[BUFFER_SIZE]; // 环形缓冲区数组
int head; // 头指针
int tail; // 尾指针
} circular_buffer;
void cb_push(circular_buffer *cb, unsigned int value) {
// 若环形缓冲区未满,则将新值存入环形缓冲区的尾指针指向的位置上,更新尾指针
if ((cb->tail + 1) % BUFFER_SIZE != cb->head) {
cb->buffer[cb->tail] = value;
cb->tail = (cb->tail + 1) % BUFFER_SIZE;
}
// 如果环形缓冲区已满,则直接返回
}
unsigned int cb_pop(circular_buffer *cb) {
if (cb->head == cb->tail) return -1; // 环形缓冲区为空,返回-1
// 取出头指针指向的元素,更新头指针
unsigned int value = cb->buffer[cb->head];
cb->head = (cb->head + 1) % BUFFER_SIZE;
// 返回取出的值
return value;
}
环形存储
发布时间 2023-03-28 09:19:23作者: flxx