为什么在取消引用双指针时需要括号?
Why parenthesis are needed when dereferencing a double pointer?
我有删除单个链表中第一个节点的函数:
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?不写就报编译错误
由于 operator precedence,*tmpHead->next
被解释为 *(tmpHead->next)
。
由于 tmpHead
属于 Node**
类型,tmpHead->next
不是有效的子表达式。
这就是为什么您需要在 *tmpHead
周围使用括号并使用 (*tmpHead)->next == NULL
.
我有删除单个链表中第一个节点的函数:
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?不写就报编译错误
由于 operator precedence,*tmpHead->next
被解释为 *(tmpHead->next)
。
由于 tmpHead
属于 Node**
类型,tmpHead->next
不是有效的子表达式。
这就是为什么您需要在 *tmpHead
周围使用括号并使用 (*tmpHead)->next == NULL
.