我对以下代码有疑问,
我的功能如下,
void deleteNode(struct myList ** root)
{
struct myList *temp;
temp = *root;
...//some conditions here
*root = *root->link; //this line gives an error
*root = temp->link; //this doesnt give any error
}
所以两条线之间有什么区别,对我而言看起来是一样的.. 错误是,
error #2112: Left operand of '->' has incompatible type 'struct myList * *'
谢谢:)
答案 0 :(得分:7)
这里的问题是“ - >”运算符绑定比“*”运算符更紧密。所以你的第一个声明:
// what you have written
*root->link;
正在评估:
// what you're getting - bad
*(root->link);
而不是:
// what you want - good
(*root)->link;
由于root是指向指针的指针,因此 - >运算符对它没有任何意义,因此出现错误信息。