将结构成员作为参数传递给C中的函数

冷冻38

假设我有以下代码用于取全班数学和科学成绩的平均值。

typedef struct
{
    char name[30];
    float math;
    float science;
}
grade;
int n = 5;
grade grades[n];

float math_average(int n)
{
    float run_sum = 0;
    for (int i = 0; i < n; i++)
    {
        run_sum += grades[i].math;
    }
    return (run_sum / n);
}

float science_average(int n)
{
    float run_sum = 0;
    for (int i = 0; i < n; i++)
    {
        run_sum += grades[i].science;
    }
    return (run_sum / n);
}

是否可以创建具有相同效果的广义平均函数?因此,我只有n个主题函数,而不是n个。也许像将主题作为参数传递?包含的示例可以更好地可视化我想要实现的目标:

float average(int n, /* [SUBJECT] */)
{
    float run_sum = 0;
    for (int i = 0; i < n; i++)
    {
        run_sum += grades[i]./*SUBJECT*/;
    }
    return (run_sum / n);  
}
代词

通常,如果您具有N相同性质的变量(字段),则没有N声明,而是声明一个N元素数组因此

#define MATH 0
#define SCIENCE 1
#define NUM_SUBJECTS 2

typedef struct
{
    char name[30];
    float subjects[NUM_SUBJECTS];
} grade;

而不是写,而是grades[i].mathgrades[i].subjects[MATH]当然,现在您可以通过参考编写一般平均例程grades[i].subjects[j]

现在,如果您认为#define开头s序列非常愚蠢,那您将是对的。我只是把它们放在那里作为例证。实际上,您enum改为使用单个声明:

enum subjects { MATH, SCIENCE, NUM_SUBJECTS };

NUM_SUBJECTS扩展主题列表时,只需要将最后一项保留在列表中。

当您的主题列表不是一成不变的,而是程序的输入之一时,这种方法自然可以扩展到这种情况。例如,您将需要一个或多个伪装的动态数组。

typedef struct
{
    char name[30];
    int num_subjects;
    float *subjects;
} grade;

但通用平均功能代码将保持不变

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将结构成员名称传递给 C++ 中的函数

来自分类Dev

如何将结构成员作为指针传递给函数?

来自分类Dev

如何将结构成员指针传递给函数?

来自分类Dev

如何将结构成员指针传递给函数?

来自分类Dev

将类成员函数作为参数传递给全局函数

来自分类Dev

将指针传递给成员函数作为void *函数的参数

来自分类Dev

如何使用C ++将成员的名称从结构作为参数传递给函数?

来自分类Dev

访问传递给函数的结构成员变量

来自分类Dev

将结构作为函数中的参数传递

来自分类Dev

是否可以将变量作为结构成员传递?

来自分类Dev

如果传递的函数也将函数作为参数,如何将函数作为参数传递给C中的函数?

来自分类Dev

如何将结构作为参数传递给函数?

来自分类Dev

将参数作为数据结构传递给Python函数

来自分类Dev

将数组从结构作为参数传递给函数

来自分类Dev

将结构数组作为参数传递给函数

来自分类Dev

c结构将自身作为参数传递给指针函数

来自分类Dev

C ++将结构函数作为继承结构中函数的参数传递

来自分类Dev

将非静态成员函数作为参数传递给成员函数

来自分类Dev

将结构数组传递给函数作为指针(C)

来自分类Dev

将匿名函数作为参数传递给Erlang中的函数?

来自分类Dev

将Java脚本函数作为参数传递给C ++函数

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

将函数作为参数传递给函数

来自分类Dev

将值列表作为参数传递给R中的函数

来自分类Dev

将数组作为参数传递给pick中的函数

来自分类Dev

将变量作为参数传递给VBA中的函数

来自分类Dev

将formset作为参数传递给Django中的函数

来自分类Dev

将哈希表作为参数传递给PowerShell中的函数

来自分类Dev

将数组作为参数传递给pick中的函数

Related 相关文章

  1. 1

    将结构成员名称传递给 C++ 中的函数

  2. 2

    如何将结构成员作为指针传递给函数?

  3. 3

    如何将结构成员指针传递给函数?

  4. 4

    如何将结构成员指针传递给函数?

  5. 5

    将类成员函数作为参数传递给全局函数

  6. 6

    将指针传递给成员函数作为void *函数的参数

  7. 7

    如何使用C ++将成员的名称从结构作为参数传递给函数?

  8. 8

    访问传递给函数的结构成员变量

  9. 9

    将结构作为函数中的参数传递

  10. 10

    是否可以将变量作为结构成员传递?

  11. 11

    如果传递的函数也将函数作为参数,如何将函数作为参数传递给C中的函数?

  12. 12

    如何将结构作为参数传递给函数?

  13. 13

    将参数作为数据结构传递给Python函数

  14. 14

    将数组从结构作为参数传递给函数

  15. 15

    将结构数组作为参数传递给函数

  16. 16

    c结构将自身作为参数传递给指针函数

  17. 17

    C ++将结构函数作为继承结构中函数的参数传递

  18. 18

    将非静态成员函数作为参数传递给成员函数

  19. 19

    将结构数组传递给函数作为指针(C)

  20. 20

    将匿名函数作为参数传递给Erlang中的函数?

  21. 21

    将Java脚本函数作为参数传递给C ++函数

  22. 22

    将函数作为参数传递给函数

  23. 23

    将函数作为参数传递给函数

  24. 24

    将值列表作为参数传递给R中的函数

  25. 25

    将数组作为参数传递给pick中的函数

  26. 26

    将变量作为参数传递给VBA中的函数

  27. 27

    将formset作为参数传递给Django中的函数

  28. 28

    将哈希表作为参数传递给PowerShell中的函数

  29. 29

    将数组作为参数传递给pick中的函数

热门标签

归档