【发布时间】:2016-06-09 14:17:26
【问题描述】:
用 C 写一个push(Queue **, Nod *) 方法。想检查我在将nods 推送到queue 时是否涵盖了基础知识。
void push_back(Queue ** q, Process * p){
p->next = NULL;
if( (*q)->head == NULL && (*q)->tail ==NULL){
(*q)->head = (*q)->tail = p;
}
(*q)->tail->next = p->next;
(*q)->tail = p;
}
我是否通过正确分配p->next 将NULL 分配给(*q)->tail->next?
【问题讨论】:
-
这里传递一个指向
Queue的指针的原因是什么?你不会在任何地方重新分配q,所以它只是发生了无用的重定向。 -
我认为指向指针的指针可以让我编写一个不需要将指针返回给调用者的函数
-
如果你像
push_back(&some_queue, some_process)一样调用它,那么你就是在模拟按引用调用,这是一种可以重新分配作为第一个参数传递的指针的方法。然后你可以在函数中做*q = some_other_queue。由于您不这样做,因此您不需要额外的重定向。 -
有趣 - 我会试试看
-
C 不支持方法。它不是 OOP 语言。