#include<stdio.h>
int fun(int a[], int n, float* f)
{
/**/
int i,y=0;
for (i = 0; i < n; i++)*f += a[i];
*f = *f / n;
for (i = 0; i < n; i++)
{
if (a[i] > *f)
y++;
}
return (y);
/**/
}
int main()
{
int a[] = { 23,40,8,32,18,2,9,16,27 };
int i, k = sizeof(a) / sizeof(int), count = 0;
float aver = 0.0;
count = fun(a, k, &aver);
printf("aver is %f, count is %d\n", aver, count);
return 0;
}
以上是已经完成的代码,想请教一下各位小伙伴一个问题,这个程序运行之后,aver是有值的,那么,为什么这个代码能将*f的值赋给aver?
全程看不到任何能将将它俩联系的代码,感觉很奇怪 还请各位小伙伴指教
int fun(int a[], int n, float* f) 函数里,形参 float *f 是指针,在主函数里 count = fun(a, k, &aver); 调用时,*f = &aver,所以在fun()函数里对 *f 的操作 *f += a[i]; *f = *f / n; ,就相当于对主函数里变量 aver的操作。
count = fun(a, k, &aver);
这里赋给aver的地址就是*f的地址