全局结构变量在特定函数

时间:2016-07-31 21:42:35

标签: c

#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node* next;
};    
struct node* head;    
void insert(int );    
void print();    

int main()    
{    
int n,i;    
printf("Enter the no. terms to be inserted");    
scanf("%d",&n);        
for(i=0;i<n;i++)           
{    
    int x;    
    printf("Enter the %dth term to the linked list : ",i+1);    
    scanf("%d\n",&x);    
    insert(x);    
}    

print();    

}    
void insert(int x)    
{    
    struct node* temp=(node*)malloc(sizeof(struct node));    
    temp->data=x;    
    temp->next=head;    
    head=temp;    
}    
void print()    
{    
   int i=1;    
   struct node* temp=head;    
   while(temp!=NULL)    
    {    
       printf("The %dth element is : %d\n",i,temp->data);    
       temp=temp->next;    
       i++;    
    }    
}    

为什么这个程序会出现这些错误:

sh-4.3 $ gcc -o main .c
main.c:在功能&#39;插入&#39;:
main.c:29:24:错误:&#39;节点&#39;未申报(首次使用此功能)
     struct node
temp =(node *)malloc(sizeof(struct node));
                        ^
main.c:29:24:注意:每个未声明的标识符仅针对它出现的每个函数报告一次 main.c:29:29:错误:预期表达式之前&#39;)&#39;令牌
     struct node * temp =(node *)malloc(sizeof(struct node));

1 个答案:

答案 0 :(得分:3)

因为您在该行中写了node而不是struct node

在C中,使用struct node {...}声明的结构称为struct node只是名为node