为什么在取消引用双指针时需要括号?



我有这个函数来删除单个链表中的第一个节点:

void removeFront(Node **tmpHead){       
if ((*tmpHead)->next == NULL)
cout << "Single Node! RemoveFront() aborted!n";'
else{
Node *oldNode = *tmpHead;
*tmpHead = oldNode->next;
delete oldNode;     
}

}

为什么我需要在 if 语句的括号之间放置*tmpHead?如果我不这样做,就会给出编译错误。

由于运算符优先级,*tmpHead->next被解释为*(tmpHead->next)

由于tmpHead是类型Node**tmpHead->next不是有效的子表达式。

这就是为什么您需要在*tmpHead周围使用括号并使用(*tmpHead)->next == NULL.

相关内容

  • 没有找到相关文章

最新更新