结构指针需要一些澄清

时间:2012-04-13 06:26:25

标签: c list pointers struct

我对以下代码有疑问,

我的功能如下,

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

谢谢:)

1 个答案:

答案 0 :(得分:7)

这里的问题是“ - >”运算符绑定比“*”运算符更紧密。所以你的第一个声明:

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

正在评估:

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

而不是:

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

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