C 我无法键入指向已键入的结构的指针
我对这些声明有点困惑。我想为我的程序制作一个链表,但由于某种原因,当我试图编译它时,它总是出错。基本上,这将是我的主节点模型,在它之后还有另一个结构(没有TYPEDEF)用于我的列表。它编译得很好。我不知道怎么了 我已经尝试将typedef放在struct student上C 我无法键入指向已键入的结构的指针,c,data-structures,struct,linked-list,typedef,C,Data Structures,Struct,Linked List,Typedef,我对这些声明有点困惑。我想为我的程序制作一个链表,但由于某种原因,当我试图编译它时,它总是出错。基本上,这将是我的主节点模型,在它之后还有另一个结构(没有TYPEDEF)用于我的列表。它编译得很好。我不知道怎么了 我已经尝试将typedef放在struct student上 typedef struct { char name[50]; int id; node next; }student; typedef student* node; typedef struc
typedef struct
{
char name[50];
int id;
node next;
}student;
typedef student* node;
typedef struct listR* list;
struct listR
{
node head,tail;
int size;
};
错误:
未知类型名称“节点”
警告:
初始化从不带强制转换的整数生成指针编译器不知道节点是什么,因为创建结构后创建了节点类型 您可以执行以下任一操作:
typedef struct node node;
struct node
{
char name[50];
int id;
node* next;
};
要告诉编译器节点是什么
或
我会用这个:
struct Node
{
struct Node *next;
struct Node *prev;
};
但是,我碰巧是那些没有充分理由不喜欢typedeffing结构的人之一。请在此处阅读更多信息:在哪一行报告“未知类型名称
节点”
?可能是student
中的那一行在定义之前使用了node
?注意listR和student之间的区别,在struct listR上,第14行中没有任何错误,下一个是node是!你的两种方法在某种程度上解决了这个问题!但我也这样做并工作了:typedef struct student*节点;typedef struct student{char name[50];int id;node next;}我的解决方案是通用的。很高兴这有帮助。您的上一个解决方案(在上面的注释中)之所以有效,是因为您对您的结构进行了原型化,如第一个示例中所示。
struct Node
{
struct Node *next;
struct Node *prev;
};