我可以在带有两个整数参数的函数中返回double或float吗?

时间:2017-05-04 16:46:01

标签: c void

我想用这个程序中的函数来计算数字的平均值,但它不起作用:

#include <stdio.h>
#include <stdlib.h>

int i;
int size = 6;

int main () {
    int arr[6] = {1, 2, 3, 4, 5, 6};

    avg (arr, & size);

    return 0;
}

double avg (int a[], int *n ) {
    int sum = 0;
    double average;

    for (i = 0 ; i < *n ; i++) {
        sum  = sum + a[i];
    }
    average = (double) sum / *n;
    return average;
}

但如果我使用相同的简单void函数来代替它,它可以正常工作:

#include <stdio.h>
#include <stdlib.h>

int i;
int size = 6;

int main () {
    int arr[6] = {1, 2, 3, 4, 5, 6};

    avg(arr, & size);

    return 0;
}

void avg (int a[], int *n) {
    int sum = 0;
    double average;

    for (i = 0 ; i < *n ; i++) {
        sum  = sum + a[i];
    }

    average = (double) sum / *n;
    printf("%lf", average);
}

这两个void函数和一个简单函数有什么区别?

1 个答案:

答案 0 :(得分:2)

第一个问题是,在main()中使用之前,您尚未声明自己的功能。在调用之前提供声明或原型。

double avg(int a[], int *n);
int main() { 
...

其次,在第一个实现中,您不存储函数的返回值

avg (arr, & size) ; // useless statement

只需将返回值存储到变量中并打印它,它将按预期工作

double average = avg (arr, & size);
printf("%lf", average);