簡體   English   中英

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函數完全不返回任何內容,因此您當前的代碼無法獲得平均值。 這是您應該進行的更改:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM