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
#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