基本上,我有这样定义的结构:
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;
谢谢!
答案 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