【发布时间】:2017-08-03 14:31:06
【问题描述】:
我在 C 语言中有一个计算数组平均值的函数。在同一个循环中,我正在创建一个 t 值数组。我当前的函数返回平均值。如何修改它以返回 t 数组?
/* function returning the mean of an array */
double getMean(int arr[], int size) {
int i;
printf("\n");
float mean;
double sum = 0;
float t[size];/* this is static allocation */
for (i = 0; i < size; ++i) {
sum += arr[i];
t[i] = 10.5*(i) / (128.0 - 1.0);
//printf("%f\n",t[i]);
}
mean = sum/size;
return mean;
}
想法: 我需要在函数中定义一个结构吗?这适用于类型标量和类型数组吗?有没有更清洁的方法?
【问题讨论】:
-
嗯,我的意思是 C 标准的含义。 自动存储持续时间 意味着变量在执行范围内的确切时间存在。
-
创建一个包含两个字段的结构,一个数组和一个双精度。了解函数内部声明的任何内容在完成后都不存在,这对您来说也很重要。您需要在函数之前分配它并发送到函数(结构)。
-
不相关,但不要在没有充分理由的情况下使用
float,因为它的精度非常有限。始终使用double。 -
@TonyTannous 或返回一个已分配对象,调用者在完成后必须将其发送给
free()。 -
@Sjoseph 不要让反对票阻止您提出问题 :) 这只是表明问题格式错误的一种方式,请阅读“如何提问部分”以了解未来的问题。下面的答案非常简单而优雅。
标签: c function struct return-value