指针和结构

cap*_*onk 3 c struct pointers

这是我的问题......我有这个代码(创建一个列表)

typedef struct node
{
    int pid;
    int runtime;
    struct node *next;
}job;

int main()
//code
job *first = NULL;
job *last = NULL;
job *newnode;
//code
//from here
if( first == NULL )
{
     first = last = newnode;
     newnode->next = NULL;
}
else
{
     last->next = newnode;
     last = last->next;
}
// to here
Run Code Online (Sandbox Code Playgroud)

所以我想在这里做一个函数之间的部分(所以看起来会更好)我做了这个...我创建了一个函数

void funct(job ** pfirst, job **plast, job*newnode);
Run Code Online (Sandbox Code Playgroud)

在主要而不是我使用的强大部分:

 funct(&first, &last, newnode);
Run Code Online (Sandbox Code Playgroud)

功能是这样的

void funct(job ** pfirst, job **plast, job*newnode)
{
   if(*pfirst == NULL)
   {
      *pfirst = *plast = newnode;
       newnode->next = NULL;
   }
   else
   {
      *plast->next = newnode;//<----
      *plast = *plast->next;//<----
   }
}
Run Code Online (Sandbox Code Playgroud)

错误在箭头中,而sais不是结构的一部分..

Gri*_*han 5

->具有较高的优先级以上*(解引用)操作符,所以你需要括号()周围list覆盖的优先级.纠正它像: (*last)->next = newnode;

*last->next = newnode;是错的,因为它*(last->next) = newnode;list没有成员一样next