私はキューを変更するため、このCのコードを理解しようとしています:キュー機能のトリッキーな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);
}
}
**qptr
パラメータとは何ですか? (*qptr)->head
の意味は?私はそれが構造体メンバリファレンスへのポインタであることを知っていますが、ここで何が起こっているのか分かりません。ヒントやアドバイスをいただければ幸いです。
'QUEUE'型の' typedef'を探します。それは 'head'メンバを持つ' struct'になります... – sarnold
@sarnold - クール、私はあなたが何を意味するか見て、はい、 'int head'構造体があります – Coffee