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