声明变量,简单链表

时间:2014-04-09 12:25:04

标签: c

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

struct node
{
   char name[30];
   int age;
   struct node *next;
} *list_head,*neos;


main()
{
}

void add_node_to_the_list(char data1[],int data2)
{
     neos=(struct node *)malloc(sizeof(struct node));
     strcpy(neos->name,data1);
     age=data2;
     neos->next=list_head;
     list_head=neos;
}

void display_list()
{
     struct node *p;
     p=list_head;
     while(p!=NULL)
     {
         puts(p->name);
         printf("%d\n",age);
         p=p->next;
     }
}

当我编译这段代码时,我得到一个错误,因为我没有声明“age”变量,尽管我已经在struct节点内部,在main函数之外。为什么呢?

4 个答案:

答案 0 :(得分:0)

age=data2;替换为neos->age = data2;

并将printf("%d\n",age);替换为printf("%d\n", p->age);

没有age变量,agestruct node的成员。

答案 1 :(得分:0)

您已在结构中声明它以便访问它,您必须通过结构

neos->age

答案 2 :(得分:0)

你走了:

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

struct node
{
       char name[30];
       int age;
       struct node *next;
       }*list_head,*neos;







main()
{
      }
void add_node_to_the_list(char data1[],int data2)/*Ç óõíáñôçóç áõôç ðñïóèåôåé êïìâï óôç ëéóôá*/
{
     neos=(struct node *)malloc(sizeof(struct node));
     strcpy(neos->name,data1);
     neos->age=data2; //the correction is made here
     neos->next=list_head;
     list_head=neos;
     }
void display_list()
{
     struct node *p;
     p=list_head;
     while(p!=NULL)
     {
                   puts(p->name);
                   printf("%d\n",p->age); //and here
                   p=p->next;
                   }
}

请注意,您一直在尝试访问struct元素而不指向它。

答案 3 :(得分:0)

年龄只是结构中的一个元素。

假设我们的结构定义如下:

struct PlaceHolder {
    int int_element
    char char_element
} * place_holder;

访问首先访问结构所需的任何元素,并引用该结构中的元素。

place_holder->int_element = 5;
place_holder->char_element = "a";

在您的情况下,您同时拥有list_headneos作为全局变量,因此要访问其中任何一个元素,您必须执行以下操作:

list_head->age = data2;
neos->age = data2;