【问题标题】:C, how to call a functionC、如何调用函数
【发布时间】:2017-03-21 08:25:35
【问题描述】:
#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 语言非常陌生,我应该将函数“平均”设置为 void,然后在 main 中输出所有内容。我不知道该怎么做,我尝试的一切都会出错。如果可能的话,我想在不创建另一个函数的情况下这样做。

【问题讨论】:

  • 有什么错误?
  • void 没有返回任何值,但您正试图将其分配给avg..
  • void average(float age[]) --> void average(float age[], float *return_value)
  • "...这应该是返回 0(与 void 一起使用)"? return 0 不与 void 搭配使用。你是从哪里得到这个想法的?
  • 相信我的话; C 不是一种反复试验的语言。该短语的“错误”部分将永远让您感到无休止的挫败感。 Get a good book 并花钱学习语言。

标签: c pointers average main


【解决方案1】:

我假设这是作业的一部分,他们试图教给您的课程可能是如何使用指针来操作值。 void 函数根本不返回任何内容,因此您当前的代码不会给您一个平均值。这是你应该做的改变:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    相关资源
    最近更新 更多