我需要有潜力存储许多课程,每个课程都有一个名称,并且在一个课程中有多个部分,并且每个部分中的许多学生每个都有一个名称(很明显),并且每个学生都有一个编号类型float的分配。
动态分配结构的成员后,我在访问它们时遇到了问题。并且还访问结构本身的数量。
我正在使用嵌套结构:
struct Student
{
char Student_LastName[30];
unsigned int Student_ID;
int* Assignments;
};
struct Section
{
struct Student* Students;
};
struct Course
{
char Course_Name[10];
struct Section* Sections;
};
struct Test_Cases
{
struct Course* Courses;
};
我已使用以下方式分配了内存:
struct Test_Cases* ptr = malloc(*Num_Cases * sizeof(*ptr));
ptr->Courses = (struct Course*)malloc(*Num_Courses * sizeof(struct Course));
ptr->Courses->Sections = malloc(*Num_Sections * sizeof(struct Section));
现在说,如果我想学习第二课程,第一部分和第三学生,我将如何去做?我首先想到的是使用:
`ptr->Courses[1]->Sections[0]->Students[2]
但是Visual Studio抛出一个错误,指出无效数据。大小等等,但可能会读取80个字节。尽管分配了80多个。
您还需要为学生分配内存。还要确保在访问之前,需要分配要取消引用的数组的成员(指针)。我下面的代码有效。您的问题应该是类似的东西。