【发布时间】:2020-01-18 21:57:04
【问题描述】:
不久前,我开始学习 c。当我尝试编码列表时,我用双指针编写了函数,因为我在其他资源中看到了这个,然后我自己完成了这个函数并且它不起作用,请帮助我并解释它是如何工作的。
void
push(v_stack_t ** node, int num_args, ...)
{
va_list ap;
v_stack_t **current = node;
va_start(ap, num_args);
for (int i = 0; i < num_args; i++) {
v_stack_t *new_node = (v_stack_t *) malloc(sizeof(v_stack_t));
new_node->value = va_arg(ap, int);
if (*current == NULL) {
*current = new_node;
continue;
}
while ((*current)->next != NULL) {
current = &(*current)->next;
}
(*current)->next = new_node;
}
va_end(ap);
}
【问题讨论】:
-
请解释您正在尝试做什么以及什么不起作用。您的问题是 varargs 部分(va_ 函数)还是 v_stack_t 数据结构?第二种情况,能不能展示一下那个数据结构
-
当前之前 = &(*current)->next;我有 *current = (*current)->next;我不明白我们为什么要写这个。
标签: c list null double-pointer