Я только что сделал этот код для вычисления дисперсии и среднего числа чисел, но я не могу найти способ вернуть массив указателей.Как вернуть массив указателей?
Это моя функция:
float* statistics(int numbers[], int numbers_len, float * ptr_mean,
float * ptr_variance, float * ptr_stdev, int * ptr_median){
float*mean; float*variance; float stat[4]; float*array_stat;
int i=0;
mean=calculate_mean(numbers, numbers_len);
variance=calculate_variance(numbers, numbers_len, mean);
stat[0]=*mean;
free(mean);
mean=NULL;
stat[1]=*variance;
free(variance);
variance=NULL;
for(i=0;i<2;i++){
array_stat=(float*)calloc(2, sizeof(float));
array_stat[i]=stat[i];
}
return array_stat;
}
Мне нужно array_stat быть массивом указателей. В ИНТ основной() я называю функцией * статистика() таким образом:
int main(){
int array_numbers[MAX_ITEMS];
int n_numbers, i=0;
float *calculate_statistics;
calculate_statistics = statistics(array_numbers, n_numbers, ptr_mean,
ptr_variance, ptr_stdev, ptr_median);
for(i=0;i<2;i++){
printf("\n[%d] ITEM > %0.2f\n", i+1, *calculate_statistics);
}
free(calculate_statistics);
calculate_statistics=NULL;
}
Кто-то может мне помочь, пожалуйста?
В настоящий момент 'array_stat' является указателем на массив поплавков. Массив имеет 100 элементов, но вы, кажется, используете только 2 из них. Зачем? И что в этом плохого? – SzG
@SzG Я редактировал свой код. Теперь массив имеет 2 элемента (среднее значение и дисперсия). Как я могу вернуть его из функции *** statistics() **? –
выглядит ОК, за исключением цикла 'main', который вы хотите' calculate_statistics [i] 'вместо' * calculate_statistics' –