gpt4 book ai didi

c - 为什么这个C函数需​​要一个指向指针的指针作为参数?

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:19 25 4
gpt4 key购买 nike

我试图从一个简单的优先级队列中理解这段 C 代码,尤其是 - 为什么它需要 struct qnode **first 部分:

int quedel(struct qnode **first, struct qnode **last, int *prio, int *val) {
struct qnode *tmp = NULL;

if((NULL == *last) && (*last == *first)) {
fprintf(stderr, "Empty queue.....\n");
return -1;
}

*val = (*first)->data, *prio = (*first)->prio;
tmp = *first, *first = (*first)->next;

if(*last == tmp)
*last = (*last)->next;
free(tmp);

return 0;
}

最佳答案

由于 C 没有按引用传递,只有按值传递,因此这种方法是进行此赋值的唯一方法:

*first = (*first)->next;

调用者可见。

(如果 first 只是一个指针,并且我们编写了 first = first->next,那么调用此函数的代码将看不到修改。 )

关于c - 为什么这个C函数需​​要一个指向指针的指针作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9439747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com