我试图建立一个链表,当我创建一个newNode的时候,由于某种原因,我得到了一个unused variable的错误,令我困惑的是,当我创建head的时候,我没有得到这样的错误,有人能解释一下我做错了什么吗?
另外,由于某种原因,在循环的第一次迭代之后,它开始打印Input:
两次。
int main()
{
char input[1];
struct node *head = NULL;
struct node *newNode = NULL;
do {
printf("\nInput: ");
scanf(" %c", input);
if(strcmp(input, "=") != 0) {
if(head == NULL) {
//no error
head = addLast(head, inputToNode(input));
}
else {
//error
newNode = addLast(head, inputToNode(input));
}
}
} while(strcmp(input, "=") != 0);
return 0;
}
我得到的错误是“错误:变量“newNode”已设置但未使用[-Werror=未使用但已设置变量]”
2条答案
按热度按时间wdebmtf21#
你只是给
NewNode
赋值了一些数据,你能在代码中看到NewNode
被使用的地方吗?你应该总是在同一个变量上工作,
head
或NewNode
,例如,如果你的head == NULL
你的代码表现很好,完美,现在,如果head已经存在,你只需要在head后面添加一个新节点:如果您这样做:
NewNode
的长度始终为2,因为您永远不会修改head,head始终只包含第一个输入,并且NewNode
将包含inputToNode(input)
作为第二个元素tv6aics12#
...当我创建
head
时,我没有得到这样的错误。head
可能在分配读取(if(head == NULL)
)之后读取,其中newNode
在其被分配之后读取。