可以这样做吗?
void putAverage(float *avg, int *arrData, int size) {
int i,sum = 0;
for(i = 0;i < size;i++) {
sum += *(arrData + i);
}
*avg = sum / size;
}
int main() {
float i;
putAverage(&i, {1, 2, 3, 4, 5}, 5);
printf("%f\n",i);
}
因为如果我运行它,它会显示像这样的错误
error: expected expression before '{' token
error: too few arguments to function 'putAverage'
note: declared here
如果有可能请进行更正,如果没有,请给我最好的方法。
答案 0 :(得分:2)
#include <stdio.h>
void putAverage(float *avg, const int *arrData, int size) {
int i,sum = 0;
for(i = 0;i < size;i++) {
sum += *(arrData + i);
}
*avg = (float)sum / size;
}
int main() {
float i;
putAverage(&i, (const int[]){1, 2, 3, 4, 5}, 5);
printf("%f\n",i);
return 0;
}
阅读此answer以获得更多理解。
(const int[]){ 1, 2 ,3 ,4 ,5 }
与
int arr[] = {1, 2, 3 ,4 ,5 };
foo(arr); //Passing the array
添加了 const
以确保我们不会错误地修改数组。
(float)sum
用于对整数除法进行类型转换并存储为float