参数中的数组没有变量初始化

时间:2017-05-22 23:55:05

标签: c arrays pointers variables parameters

可以这样做吗?

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

如果有可能请进行更正,如果没有,请给我最好的方法。

1 个答案:

答案 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