指向另一个数组的数组的指针元素

时间:2018-05-20 02:09:48

标签: arrays pointers struct

所以我正在使用这个结构:

typedef struct{
    int id;
    int *grades;
}Student;

如果学生有一个id和一系列成绩,可以有1到40000个元素。

我希望有一个添加新学生的功能,有点像这样:

void newSt(int id, int *grades){

    Student st;
    st.id = id;
    /*adding grades*/

    /*other operations I might want to do*/
}

但是我对如何使用指针和内存分配感到有些困惑,因为我知道它永远不会超过40000个元素,也许我可以做到:

 st.grades = malloc(40000*sizeof(int);

但后来我不知道我要添加的数组成绩有多少元素。我不认为我不能将数组等级重新分配到40000个元素,因为我从来没有任何东西。对我来说最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

不知道成绩数组的大小是个问题。你不能在不知道它的大小的情况下处理数组(在C中)。

在处理未知大小的输入方面,标准技术是分配malloc一定量的内存,然后每次需要增加它时加倍分配,但我不认为这是你的意思询问。