C 未初始化变量的参数中的数组

C 未初始化变量的参数中的数组,c,arrays,pointers,variables,parameters,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);

有可能这样做吗

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);
}
如果可能的话请改正,如果没有请给我最好的方法

#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;
}
添加了
const
,以确保不会错误地修改数组


(float)sum
用于对整数除法进行类型转换,并存储为float

{1,2,3,4,5}
-->(int[]){1,2,3,4,5},
*avg=sum/size-->
*平均值=(浮点)和/大小使用
arrData[i]
*(arrData+i)
更简单,而且没有性能差异。代码不错,但您还应该解释您所做的更改以及原因
#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;
}
int arr[] = {1, 2, 3 ,4 ,5 };
  foo(arr); //Passing the array