当前,第一个函数info()
工作正常并返回整个数组。这似乎也传递给kurtosis()
函数也正常,因为我已经测试过,看看每个元素是否手动打印在函数中。但是,当试图通过循环打印每个元素时,它似乎只在第一次迭代中打印该值;对于此后的迭代,它会打印0
。奇怪的是,当用固定数字替换i
时,仍然发生这种情况。打印1D数组通过循环未按预期工作
#include <stdio.h>
double * info(){//function for obtaining up to 10 numbers
int i;
int x=0;
double numbers[10];
for (i = 1; i < 11; i++){
printf("\nPlease enter value %d:", i);
scanf("%lf", &numbers[i]);
x++;//counting number of entries
if(numbers[i] <0){//stops accepting numbers if user enters negative number
x--;
numbers[i] = -1;
break;
}
}
printf("%d numbers entered.\n", x);
return numbers;
}
double kurtosis(double * numbers){
int i, x;
double mean, numerator, denominator, sum;
for (i = 1; i < 11; i = i + 1){ //irrelevant loop; will be used later on
if (numbers[i] == -1){
x = i-1;
break;
}
}
for (i = 1; i < 10; i++){
printf("%lf\n", numbers[i]);//printing each value in the array
}
}
int main(void){
double * numbers = info();
double kurtno;
kurtno = kurtosis(numbers);//passing the array to the kurtosis function
}
这是我找到的将函数返回给main的唯一方法,是否还有另外一种可以建议的方法?另外就基于0的索引而言,这是我的想法,但它似乎适用于基于1的索引。 – Ollie
@Ollie是的,让'numbers'成为一个指针,使用'malloc()'动态分配内存,然后你可以从'info()'返回'numbers'。 –
@Ollie还有,_seem_工作是[UB]的许多_beauties_之一(https://en.wikipedia.org/wiki/Undefined_behavior) –