我对 C 还是比较陌生,只有 2 个问题。我有一个学生结构:
struct student{
Name name;
Comment comment;
int ID;
float fee;
}
全局数组包含 10000 名学生。 名称和注释是仅包含指向字符的指针的结构。还有5个功能:
void InitStudent();
BOOL AddNewStudent();
BOOL DeleteStudent();
BOOL ReportStudents():
BOOL Cleanup();
在 InitStudents() 中,所有学生 ID 都必须初始化为 -1。不确定是否有比遍历整个数组并初始化 ID 更简单的方法?
在 ReportStudents 中,我们必须报告数据库中所有已添加的学生。问题是没有 StudentCount 变量或类似的东西。 DeleteStudent 函数还可以删除在数组中留下空白的学生(无法更改)。函数也不能带任何参数。有没有什么方法可以循环或打印出所有学生,而不必循环 10000 次来检查 ID 是否不是 -1?
提前致谢
最佳答案
并非如此,如果您通过函数执行此操作,则需要遍历所有学生结构以将 ID 设置为 -1。不过,如果您总是在使用该结构之前检查 ID,您可以使用
memset
,因为-1
有一个方便的位模式。/* assuming all_students is your array of struct student (and not a pointer * to a block of memory) */ memset(all_students, -1, sizeof(all_students));
不是没有一些其他方法来跟踪哪些学生是有效的,通过另一种数据结构,例如链表或 bitmap。 .
关于C编程初始化结构数组等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850961/