我正在为C考试工作,在尝试将元素插入到链表时,我遇到了运行时问题。我唯一的目的是添加4个元素列表然后打印列表。但是,它会出错。我已经查看了一些插入代码,我的代码似乎正确。看不到错误。任何帮助将不胜感激。
#include <stdio.h>
#include <stdlib.h>
struct ders{
char kod;
struct ders *next;
}*header;
typedef struct ders Ders;
void add(Ders*,Ders*);
void print(Ders*);
int main(void)
{
header = NULL;
Ders *node = NULL;
int i = 0;
char c;
while(i<4)
{
scanf("%c",&c);
node = (Ders*)malloc(sizeof(Ders));
node->kod = c;
node->next = NULL;
add(header,node );
i++;
}
print(header);
return 0;
}
void add(Ders *header, Ders *node)
{
if(header == NULL){
header = node;
header->next = NULL; }
else{
node->next = header;
header = node;
}
}
void print(Ders *header)
{
Ders *gecici = header;
while(gecici != NULL){
printf("%c\n",gecici->kod);
gecici = gecici->next;
}
}
答案 0 :(得分:1)
正如尼日病毒所说, “指针是按值传递的。因此你可以改变它指向的内存,但不能改变实际指针,即指向别的东西。”
您的修改导致错误*header is not member of struct
因为
->
优先级高于
*
尝试使用
(*header)->next = NULL
代替。
C运算符优先级: http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm