#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函数之外。为什么呢?
答案 0 :(得分:0)
将age=data2;
替换为neos->age = data2;
并将printf("%d\n",age);
替换为printf("%d\n", p->age);
没有age
变量,age
是struct 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_head
和neos
作为全局变量,因此要访问其中任何一个元素,您必须执行以下操作:
list_head->age = data2;
neos->age = data2;