我用C语言编码,无法找出错误是什么.它一直告诉我第一:在这一行
temp = (Node*) malloc(sizeof(struct Node));
的Node
是不宣而第一次使用是在这个function.but我想我以前已经声明它.
第二:在同一行
"预期表达''''令牌"
它指向了 (Node*)
第三:
"投入结束时的预期声明或声明."
而它指向}
主要关闭.
对于第一个我搜索并发现它是因为C89而且我必须在我的函数顶部声明所有变量.我做了但是错误仍然存在.
这是我的代码:
#include#include #include #include struct Node{ int data; struct Node* next; }; struct Node* head; void Add(int x){ struct Node* temp; temp = (Node*) malloc(sizeof(struct Node)); temp -> data = x; temp -> next = head; head = temp; } void print(){ struct Node* temp; temp = head; printf("List is:"); while(temp != NULL){ printf(" %s",temp -> data); temp = temp -> next; } int main(int argc, char **argv) { head = NULL; Add(3); print(); return 0; }
我正在尝试使用链表.
在你的代码中
temp = (Node*) malloc(sizeof(struct Node));
应该
temp = malloc(sizeof(struct Node));
或者,为了更好,
temp = malloc(sizeof *temp);
消除问题,因为你不需要转换malloc()
和家庭的返回值C
..
但是,错误是因为您错过了struct
那里的关键字.
要解决第三个错误,
"投入结束时的预期声明或声明."
好吧,你错过了}
这个print()
功能的结局.
FWIW,你应该malloc()
在使用之前检查返回的指针和函数族的有效性.
话说回来,
对于第一个我搜索并发现它是因为C89而我必须在函数顶部声明所有变量
不是真的.是的,在C89,你需要申报的顶部所有的变量,但这并没有让你跳过的struct
关键字,反正.