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