【发布时间】:2019-05-12 06:33:44
【问题描述】:
这是用 C 语言实现带有环形缓冲区的队列的程序的一部分。
我不明白第 8-9 行。
if(q->rear == q->max) q->rear = 0; 这一行到底是什么意思?
如果后索引等于最大容量...然后将零分配给后? T_T 请帮帮我!
int Enque(IntQueue* q,int x)
{
if (q->num >= q->max)
return -1;
else {
q->num++;
q->que[q->rear++] = x;
if(q->rear == q->max)
q->rear = 0;
return 0;
}
}
【问题讨论】:
-
参见维基百科上环形缓冲区的解释:en.wikipedia.org/wiki/Circular_buffer。他们使用模运算而不是测试 q->rear 是否达到数组的大小
-
注意
=和==的区别 -
@AnttiHaapala 我想我知道 = 和 == 之间的区别。 o_o 不是吗?
-
那你的问题为什么同时使用它们
-
@AnttiHaapala Ohhh 那是错字!谢谢提醒!