在struct中创建struct的指针数组

时间:2016-06-04 10:32:49

标签: c arrays pointers struct abstract-data-type

基本上,我有这样定义的结构:

struct D_Array
{
    int Capacity;
    int Cur_Size;
    struct Student* List;
};

现在,在创建结构后;

struct D_Array* T_Array;
if (T_Array = malloc(sizeof(struct D_Array)) == NULL)
{
    printf("There has been a problem with memory allocation. Exiting the program.");
    exit (21);
}

我在此结构中创建学生列表时遇到问题。我需要列表是一个指针数组,因为我应该制作某种ADT程序,我试着做到这样:

T_Array->Capacity = 10;
T_Array->Cur_Size = 0;
T_Array->List[10]= (struct Student*) malloc(sizeof (struct Student*));

我试图改变它并不重要,我得到同样的错误: 从类型'struct Student *'|

分配类型'struct Student'时不兼容的类型

我正在尝试创建一个我可以做类似的数组;

T_Array->List[1]=Student_Pointer;

谢谢!

2 个答案:

答案 0 :(得分:2)

将数组的类型更改为struct Student **,它将是指针数组:

struct student * - >指向学生的指针。 struct student ** - >一个指向学生指针的指针(你需要什么)。

struct D_Array
{
    int Capacity;
    int Cur_Size;
    struct Student** List;
}

和分配:

T_Array->List = malloc (sizeof (struct Student*) *  lengthofarray);

然后:

T_Array->List[1]=Student_Pointer;

答案 1 :(得分:0)

struct Student* List; List是Student的指针 当你做List [10]时,你所做的就是基本的 *(List+10)表示从第11位获得学生

如果你想要一个指针数组,你需要做一些像

这样的事情

struct Student **List;
然后
List = (Student **)malloc(10*sizeof(Student **)) 然后,列表将为10个指针的学生分配内存,最终每个指针的大小为int