繁体   English   中英

typedef struct 声明返回错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM