[英]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.