Error Traverse List of LinkedList in C
我编写了以下代码,但是当我尝试编译代码时,编译器显示以下错误。我的错在哪里?
编译器错误:
main.c:32:39: error: dereferencing pointer to incomplete type a€?struct Informationa€?
printf(“Information : %d/
“, ptr->_number);
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include <stdio.h> #include <stdlib.h> typedef struct Informaion{ int main(int argc, char const *argv[]){ Information *temp; temp = malloc(sizeof(Information)); temp = malloc(sizeof(Information)); temp = malloc(sizeof(Information)); temp = malloc(sizeof(Information)); struct Information *ptr = head; |
你的类型的名字是
的行中
1
|
struct Information *ptr = head;
|
为了解决这个问题,你可以修正错字,或者你可以直接通过 typedef 使用它。
1
|
Information *ptr = head;
|
作为一般惯例,您不应使用以下划线开头的变量或任何标识符。这些是为编译器保留的。建议你把
结构定义有错别字
1
2 3 4 5 |
typedef struct Informaion{
^^^ int _number; struct Informaion *next; } Information; |
所以要么在声明中的任何地方使用类型说明符
此代码片段
1
2 3 |
没有意义。其地址存储在指针 temp 中的已分配对象未添加到列表中。
应该写成
1
2 3 4 |
temp = malloc(sizeof(Information));
temp->_number = 23; head->next->next->next = temp; head->next->next->next->next = NULL; |
要释放分配的节点,你应该写
1
2 3 4 |
换行:
1
|
struct Information *ptr = head;
|
到:
1
|
struct Informaion *ptr = head; //no t
|
或 :
1
|
Information *ptr = head;
|
并且错误将消失。您可以定义的类型可以使用
请注意,不鼓励使用以下划线开头的变量(例如您的
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/269343.html