C、如何调用一个函数

C, how to call a function

#include <stdio.h>

void average(float age[]);

int main(void)
{
    float *p;
    float avg = 0.0;
    float age[] = { 23.4, 55, 22.6, 3, 40.5, 18 };
    p = &age[0];
    avg = average(age);
    printf("\n\nAverage age = %.2f\n\n\n", avg);
    return 0; // this should return the average age from the void average() function
}

void average(float age[])
{
    float *p;
    p = &age[0];
    int i = 0;
    float avg = 0.0 , sum = 0.0;
    for (i = 0; i < 6; ++i) 
    {
        sum += *(p+i);
    }
    avg = (sum / 6);
    //return avg; // this should be a return 0 (to go with the void)
}

嗨,我是 C 的新手,我应该使函数 "average" 无效,我已经完成了,然后在 main 中输出所有内容。我不确定该怎么做,我尝试的每件事都会出错。如果可能的话,我想在不创建另一个功能的情况下做到这一点。

我假设这是作业的一部分,他们试图教给您的课程可能是如何使用指针来操纵值。 void 函数根本没有 return 任何东西,因此您当前的代码不会给您一个平均值。这是您应该进行的更改:

void average(float age[], float *avg);

int main(void)
{
    float *p;
    float avg = 0.0;
    float age[] = { 23.4, 55, 22.6, 3, 40.5, 18 };
    p = &age[0];
    average(age, &avg);
    printf("\n\nAverage age = %.2f\n\n\n", avg);
    return 0; // this should return the average age from the void average() function
}

void average(float age[], float *avg)
{
    float *p;
    p = &age[0];
    int i = 0;
    *avg = 0.0;
    float sum = 0.0;
    for (i = 0; i < 6; ++i) 
    {
        sum += *(p+i);
    }
    *avg = (sum / 6);
    //return avg; // this should be a return 0 (to go with the void)
}

您正在传递一个指向 average 函数的指针,它作用于该内存地址的值。

这里有一些关于 C 中的指针的更多信息。 https://study.cs50.net/pointers