[英]typedef struct declaration gives back an error
我不明白以下代码有什么问题。 我正在尝试在 C 中创建一个链表。 我正在创建一个我称之为人的 typedef 结构,然后我声明一个指向该结构的指针,并且我试图分配一些 memory 以便它能够存储其所有组件。 编译器返回一个错误,说 'head' 没有命名类型。
typedef struct node {
int num;
struct node *next;
} person;
person *head = NULL;
head = (person*)malloc(sizeof(node));
假设对 head 的分配在 function 中,它仍然不正确,因为node
不是有效的类型或变量。 它是struct node
但当你typedef
'd 你应该使用person
head = malloc(sizeof(person));
但是由于变量head
已经是person*
类型,您也可以这样做
head = malloc(sizeof(*head));
其优点是您不再需要知道确切的类型名称(如果您更改它)
另请注意,不需要也不需要转换malloc
的结果。
不过,您必须检查结果是否为 NULL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.