C结构错误:取消引用指向不完整类型的指针

时间:2017-04-17 17:42:26

标签: c data-structures structure

我是否错误地宣布了结构?我尝试根据此错误检查其他几个类似的问题,仍然无法找到解决方案。需要你的帮助来解决它。谢谢提前。

#include <stdio.h>
#include <stdlib.h>

struct Node{
int info;
struct node *link;
} ;

void display(struct node *start);

int main()
{
struct node *start=NULL;

int choice;
int num;

while(1)
{
printf("\n1. Display \n9. Exit \n");

printf("\nEnter your choice\n\n\n");
scanf("%d",&choice);

switch(choice)
{
case 1:
    display(start);
    break;

default:
    printf("\nInvalid choice");

}
}
}
void display(struct node *start)
{
   struct node *p;

    if(start==NULL)
    {
        printf("List Is Empty");
        return;
    }
    p=start;
    while(p!=NULL)
    {
        printf("%d",p->info); // Getting Error in these 2 Lines
        p=p->link;            // Getting Error in these 2 Lines
    }

}

3 个答案:

答案 0 :(得分:0)

您声明了指向struct node的指针,但未定义该类型。 C区分大小写。

你得到错误的原因是,在你尝试取消引用指向结构的指针之前,编译器实际上需要知道布局。

答案 1 :(得分:0)

看起来像是一个字符大小写问题:你有struct Node,但是struct node *,它不是完整的,不是完全没有。

答案 2 :(得分:0)

看一下这个Struct节点*和struct Node *:

您的代码中没有定义为struct node,因为首先使用了struct Node

    #include <stdio.h>
    #include <stdlib.h>

    struct node  ///<<< fix 
    {
    int info;
    struct node *link;
} ;

void display(struct node *start);

int main()
{
    struct node *start=NULL;

    int choice;
    int num;

    while(1)
    {
        printf("\n1. Display \n9. Exit \n");

        printf("\nEnter your choice\n\n\n");
        scanf("%d",&choice);

        switch(choice)
        {
        case 1:
            display(start);
            break;

        default:
            printf("\nInvalid choice");

        }
    }
    }
    void display(struct node *start)
    {
    struct node *p;

    if(start==NULL)
    {
        printf("List Is Empty");
        return;
    }
    p=start;
    while(p!=NULL)
    {
        printf("%d",p->info); // Getting Error in these 2 Lines

    /// struct node and struct Node are diffrent things

        p=p->link;            // Getting Error in these 2 Lines
    }

}