所以我正在使用这个结构:
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个元素,因为我从来没有任何东西。对我来说最好的方法是什么?
答案 0 :(得分:0)
不知道成绩数组的大小是个问题。你不能在不知道它的大小的情况下处理数组(在C中)。
在处理未知大小的输入方面,标准技术是分配malloc一定量的内存,然后每次需要增加它时加倍分配,但我不认为这是你的意思询问。