Cof*_*fee 0 c debugging code-analysis
我正在尝试理解这个用于修改队列的C代码:
/*
* create or delete a queue
* PARAMETERS: QUEUE **qptr - space for, or pointer to, queue
* int flag - 1 for create, 0 for delete
* int size - max elements in queue
*/
void qManage(QUEUE **qptr, int flag, int size){
if(flag){
/* allocate a new queue */
*qptr = malloc(sizeof(QUEUE));
(*qptr)->head = (*qptr)->count = 0;
(*qptr)->que = malloc(size * sizeof(int));
(*qptr)->size = size;
}
else{
// delete the current queue
(void) free((*qptr)->que);
(void) free(*qptr);
}
}
Run Code Online (Sandbox Code Playgroud)
**qptr参数是什么?什么 (*qptr)->head意思?我知道 - >是一个指向结构成员引用的指针,但我已经迷失在这里发生的事情.我感谢任何提示或建议.
QUEUE** qptr意味着它qptr是指向a QUEUE(无论是什么)的指针.
*qptr是"指向的内存qptr",因此是指向a的指针QUEUE.
x->y是一样的(*x).y.换句话说,"拿出指向的东西x,然后得到它y".有关参考,请参阅/sf/answers/243541861/.
所以,(*qptr)->head是head的QUEUE这是由东西指向它指向 qptr.
额外的间接层是这样的,函数可以有效地返回一个QUEUE*.为了返回它QUEUE*,它接收a QUEUE**,并使其指向新分配的内存.
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |