>我需要对链表中的一个变量求和。我有以下功能,但我注意到错误。我还认为我可能没有正确完成 if 语句以将求和值返回给函数。
int print_nodeprice1 (node *headptr, int num) {
int sum = 0;
node *first;
first = *headptr; // getting errors that I can't assign this
while (first != NULL) {
first = first -> next_ptr;
if (num == first -> price1)
return sum;
else {
printf("n");
}
}
}
first = headptr;
这将起作用..由于两者都是类型(节点 *(
您有几个问题:
- 分配 first = headptr,而不是 *headptr 在
- 设置第一个 = 之前,在循环顶部进行数字检查 =首页>下一页
- 你实际上并没有总结任何东西。你的意思是增加你的总和变量?
first = *headptr; // getting errors that I can't assign this
正确 - 您正在尝试将值(取消引用(分配给指针。
first = headptr;
除此之外...目前还不清楚你所说的"对我的链表内的变量求和"是什么意思。代码在找到等于传入num
的price1
时返回0
。
int print_nodeprice1 (node *headptr, int num) {
node *first;
first = *headptr; // getting errors that I can't assign this
first
是指向node
的指针,headptr
也是指向node
的指针。现在,您尝试将删除引用headptr
的结果分配给first
。
你不需要*
.它应该只是:
first = headptr;
first
和headptr
属于 node*
型。*
运算符取消引用它们,因此*headptr
类型为 node
,而不是 node*
。
first
是指向node
的指针。 headptr
是指向 node
的指针。 *headptr
是一个节点。 不能将node
分配给指向 node
的指针。