点作为函数参数C
这可能是一个简单的解决方案,我不太熟悉C,只是尝试将java数据结构分配移植到C 这就是我得到的错误: test.c:4:错误:在“*”标记之前应为“')点作为函数参数C,c,list,linked-list,C,List,Linked List,这可能是一个简单的解决方案,我不太熟悉C,只是尝试将java数据结构分配移植到C 这就是我得到的错误: test.c:4:错误:在“*”标记之前应为“') #include <stdio.h> #include <stdlib.h> void to_screen(NODE *cur){ while(cur->next != NULL){ printf("%d\n", cur->data); cur = cur->
#include <stdio.h>
#include <stdlib.h>
void to_screen(NODE *cur){
while(cur->next != NULL){
printf("%d\n", cur->data);
cur = cur->next;
}
}
void add_first(NODE *head, int data){
NODE *cur;
int i;
for(i=0; i<10; i++){
cur = malloc(sizeof(NODE));
cur->data = data;
cur->next = (*head).next;
head->next = cur;
}
}
typedef struct node{
int data;
struct element *next;
}NODE;
int main(){
int i;
NODE *head;
for(i=0; i<10; i++){
add_first(head, i);
}
to_screen(head);
}
test.c:11:错误:在“*”标记之前应为“')
#include <stdio.h>
#include <stdlib.h>
void to_screen(NODE *cur){
while(cur->next != NULL){
printf("%d\n", cur->data);
cur = cur->next;
}
}
void add_first(NODE *head, int data){
NODE *cur;
int i;
for(i=0; i<10; i++){
cur = malloc(sizeof(NODE));
cur->data = data;
cur->next = (*head).next;
head->next = cur;
}
}
typedef struct node{
int data;
struct element *next;
}NODE;
int main(){
int i;
NODE *head;
for(i=0; i<10; i++){
add_first(head, i);
}
to_screen(head);
}
#包括
#包括
无效到_屏幕(节点*cur){
while(cur->next!=NULL){
printf(“%d\n”,cur->data);
cur=cur->next;
}
}
void add_first(节点*头部,整数数据){
节点*cur;
int i;
对于(i=0;idata=data;
当前->下一步=(*头)。下一步;
head->next=cur;
}
}
类型定义结构节点{
int数据;
结构元素*next;
}节点;
int main(){
int i;
节点*头;
对于(i=0;i您需要在使用节点之前定义它。将定义移到顶部。您需要在使用节点之前定义它。将定义移到顶部。您需要将结构的定义移到to_屏幕函数上方。编译器说它不知道节点是什么。您需要移动y的定义我们的结构位于to_screen函数上方。编译器说它不知道节点是什么。您需要将此块移到顶部,其他两个答案建议您这样做
typedef struct node{
int data;
struct element *next;
}NODE;
你可能会问原因。原因是C语言规范不同于Java。因此,它是从上到下编译的。因此,如果它看到未定义的内容,它会在该点上查找定义,如果它看到定义,它就会得到定义。它不会在代码行下方查找。你需要将此块移到下一行如其他两个答案所推荐,排在前面
typedef struct node{
int data;
struct element *next;
}NODE;
你可能会问原因。原因是C语言规范不像Java。所以它是从上到下编译的。因此,如果它看到未定义的东西,它会在该点上查找定义,如果它看到定义,它就会得到定义。除了将typedef移到t之外,它不会在代码行下方查看是的,这解决了我问题的最后一部分,谢谢这段代码中还有另一个问题。main函数中的node*head
可能指向任何地方,它也是add_first()
的一个参数。因为add_first()
读取head byhead->next
,这将导致分段错误。除了将typedef移到顶部之外,它不应该读取:typedef结构节点{int data;struct node*next;}NODE;
?是的,这解决了我问题的最后一部分,谢谢这段代码中还有另一个问题。main函数中的NODE*head
可能指向任何地方,它也是add\u first()
的一个参数。因为add\u first()
读取head byhead->next
,它会导致分段错误。这不是关于编译器的智能或愚蠢。这是关于单通道或多通道。这是关于语言规范,而不是编译器。Ops,好吧。我不知道。我总是责怪编译器。这不是关于编译器的智能或愚蠢。这是关于b是单通还是多通。这是语言规范的问题,不是编译器的问题。Ops,好吧。我不知道。我总是责怪编译器