c - 将函数的数组参数传递给前一个函数中使用的另一个函数

标签 c

所以我很困惑为什么我的代码不起作用。我有两个函数,一个将数字相加,另一个获取平均值。想着不妨在average函数中调用add函数来多省几行代码,就尝试了一下。

此外,它们都有一个数组作为参数。该数组的大小为 5,并设置为浮点型。

float addOp(float num[])
{
    int i;
    float ans;

    for(i=0;i<5;i++)
    {
        ans += num[i];
    }

    return ans;
}

float aveOp(float num[])
{   
    float average;

    average = addOp(num) / 5;

    return average; 
}

add 函数工作得很好,但是当我尝试使用av​​erage 函数时,代码会运行,但它给出的答案却相差甚远。我认为 C 不允许在后续函数中传递数组,但我不太确定。对我做错了什么有什么想法吗?

最佳答案

问题是addOp()

float addOp(float num[])
{
    int i;
    float ans; /* This is uninitialized */

    for(i=0;i<5;i++)
    {
        ans += num[i];  /* This adds an undefined start point to the 5 numbers*/
    }

    return ans;
}

解决方法是更改​​为

float ans = 0;

关于c - 将函数的数组参数传递给前一个函数中使用的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53465757/

相关文章:

c - 如何在不使用 C 中的 dirent.h 的情况下列出 Windows 上目录中的所有文件?

c - 在运行时将机器代码插入到C代码中

c - 如何使用 scanf() 将 n 个元素输入到数组中?

C 比较 char 到 "\n"警告 : comparison between pointer and integer

c - 以编程方式确定有符号整数类型的最大值

c - 32位x86代码是否需要专门为共享库文件进行PIC编译?

c - 更有效的 flooring double 方法来获取数组索引

c - 简单的USB驱动程序

c++ - 试图解决有关 SECURITY_FLAG_STRENGTH_* 标志的歧义

c - 从家庭作业计算器程序的命令行读取 * 字符时遇到问题