2

我对以下代码有疑问,

我有一个功能如下,

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 * *'

谢谢 :)

4

1 回答 1

7

这里的问题是“->”操作符比“*”操作符绑定得更紧密。所以你的第一句话:

// what you have written
*root->link;

正在评估:

// what you're getting - bad
*(root->link);

而不是:

// what you want - good
(*root)->link;

由于 root 是指向指针的指针,因此 -> 运算符对它没有任何意义,因此会出现错误消息。

于 2012-04-13T06:30:31.853 回答