C编程初始化结构数组等

标签 c arrays structure

我对 C 还是比较陌生,只有 2 个问题。我有一个学生结构:

   struct student{
        Name   name;
        Comment  comment;

        int ID;
        float fee;
    }

全局数组包含 10000 名学生。 名称和注释是仅包含指向字符的指针的结构。还有5个功能:

      void InitStudent();
      BOOL AddNewStudent();
      BOOL DeleteStudent();
      BOOL ReportStudents():
      BOOL Cleanup();
  1. 在 InitStudents() 中,所有学生 ID 都必须初始化为 -1。不确定是否有比遍历整个数组并初始化 ID 更简单的方法?

  2. 在 ReportStudents 中,我们必须报告数据库中所有已添加的学生。问题是没有 StudentCount 变量或类似的东西。 DeleteStudent 函数还可以删除在数组中留下空白的学生(无法更改)。函数也不能带任何参数。有没有什么方法可以循环或打印出所有学生,而不必循环 10000 次来检查 ID 是否不是 -1?

提前致谢

最佳答案

  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));
    
  2. 不是没有一些其他方法来跟踪哪些学生是有效的,通过另一种数据结构,例如链表或 bitmap。 .

关于C编程初始化结构数组等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18850961/

相关文章:

c - 在 HP UX 中找不到 rexec

c++ - 数据的 mmap 和页面对齐 - 这会提高性能吗?

ios - Swift - 即使在用数据填充后数组看起来还是空的

c - 程序终止后变量保留值,如何防止? C

c - 访问数组的 NULL 字符

c - 如何使用 malloc 定义二维数组并将其传递给函数

ruby - 如何在 ruby​​ 中像这样的数组中添加多个数组

java - 用数组创建了多少个对象? [ java ]

c - scanf 取一个 struct 元素的值在 C linux 中给出 seg 错误

c - 结构值传递