如何导航指针数组

问题描述 投票:0回答:1

我需要有潜力存储许多课程,每个课程都有一个名称,并且在一个课程中有多个部分,并且每个部分中的许多学生每个都有一个名称(很明显),并且每个学生都有一个编号类型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多个。

c pointers dynamic-memory-allocation
1个回答
0
投票

您还需要为学生分配内存。还要确保在访问之前,需要分配要取消引用的数组的成员(指针)。我下面的代码有效。您的问题应该是类似的东西。

© www.soinside.com 2019 - 2024. All rights reserved.