其实有一个比较简单一点的理解方法:
首先回顾一下C语言中数组的定义:
数组名就是数组第一个元素的首地址。
即:
数组名就是数组第一个元素的指针。
比如数组a[],其中的“a”就是数组第一个元素的指针。
回到循环队列这里来,动态分配完内存以后,Q.base其实就是这个刚刚动态分配的新内存的第一个元素的指针。
根据数组名就是数组第一个元素的指针可知,Q.base其实就是数组名(就和数组a[]中的a一样),而通过循环队列的定义可知front和rear都是int型变量,它们的值代表的就是数组的下标数字。
怎么表示一个数组元素?
数组名字+数组下标。
数组名字已经知道了,就是Q.base;
数组下标我们也知道了,就是front和rear;
把它们合在一起,就形成了一个完成的数组元素下标:Q.base[Q.front] / Q.base[Q.rear]