C编程:如何在结构中使用结构创建链表

C编程:如何在结构中使用结构创建链表,c,pointers,struct,linked-list,C,Pointers,Struct,Linked List,因此,我试图创建一个学生数据库,其中包含一个结构,以他们的姓名为主要因素,以及其他因素,如性别、年龄。同样在该结构中,还有另一个包含学生班级成绩的结构:我该如何做?如果问题是“我如何访问学生结构中的成绩结构?”答案是这样的-假设st是一个学生指令指针 st->grades.math[0] = 'A' 你在理解方面的基本问题是你的学生结构错误,这误导了你。看看这个,试着理解它是如何工作的,为什么它是你需要的,以及你如何使用它来解决你的问题: struct student{ char

因此,我试图创建一个学生数据库,其中包含一个结构,以他们的姓名为主要因素,以及其他因素,如性别、年龄。同样在该结构中,还有另一个包含学生班级成绩的结构:我该如何做?

如果问题是“我如何访问学生结构中的成绩结构?”答案是这样的-假设st是一个学生指令指针

st->grades.math[0] = 'A'

你在理解方面的基本问题是你的
学生结构错误,这误导了你。看看这个,试着理解它是如何工作的,为什么它是你需要的,以及你如何使用它来解决你的问题:

struct student{
    char name[20];
    int age;
    char gender[7];
    struct grades gr;
    struct student *nextStudent;
};
你的打印功能,可能是这样的

void print (void){
    for(struct student *stud = root; stud != NULL; stud = stud->nextStudent){
        printf("Name: %s\n",stud->name);
        printf("Grades: %s, %s, %s, %s\n", stud->gr.math, stud->gr.history, stud->gr.science, stud->gr.writing);
    }
}

我不确定这里的问题到底是什么你在创建
学生
结构时就已经自己解决了问题,你的
grades
struct-inside已经可用了唯一的例外是如果
grades
字段是一个指针,你的意思是
struct-student
-看起来应该是
struct-student
struct-grades似乎缺少某些内容<代码>结构等级GRD也许?现在我想知道我怎么没有看到这些…如果你问你如何打印整个学生名单的成绩,我建议你向我们展示你尝试的代码,然后我们可以帮助指导你如何修复它。当您尝试该代码时,请考虑“递归”。您使用指向第一个学生的指针调用函数,函数将其作为参数“thisStudent”接收,在函数打印该学生的数据后,它将使用thisStudent.student调用自己。我修复了它,忘了在这里命名它。但仍然有问题,编译器说“grad”可能未初始化就用于此函数[-Wmaybe未初始化]看看我输入的代码。解决每个学生的成绩结构的正确方法是,既然你把它命名为gr,那就是说
stud->gr
,然后该结构的任何成员都会像这样被引用
stud->gr.math
,它会将成绩字段留空,不会打印它们。你正在循环浏览你的列表,并且在任何时候点,
stud
是指向您想要输出的学生的指针。您不需要指向
gr
grades结构的指针。要解决它,您可以使用与名称相同的方法。即,解决名称(并输出名称),您使用了
stud->name
。同样,要解决
gr
这是
stud
指向的学生结构的一部分,您只需使用
stud->gr