【发布时间】:2019-10-15 15:19:03
【问题描述】:
我正在制作一个能够使用一些统计功能的程序。为此,我使用 malloc 作为要操作的样本数量的数组,因为我希望它的大小基于用户的输入。这不是我第一次这样做,效果很好,但是这次我无法根据需要设置大小,也找不到缺陷。
下面是创建和打印数组的必要代码,跳过 main() 因为它只运行函数。
int *sample;
int MakeSample()
{
int sampleSize;
int valueN;
printf("Enter size of your sample: ");
scanf("%d", &sampleSize);
sample = malloc(sampleSize * sizeof(int));
for (int i = 1; i <= sampleSize; i++)
{
printf("Enter value #%d: ", i);
scanf("%d", &valueN);
sample[i - 1] = valueN;
}
}
int PrintSample()
{
for (int k = 1; k <= sizeof(sample); k++)
{
printf("Value #%d: %d\n", k, sample[k - 1]);
}
}
如果我为数组输入大小 1,那应该是请求和打印的值的数量,而不是我得到这个:
Value #1: 1
Value #2: 0
Value #3: 0
Value #4: 0
Value #5: 0
Value #6: 0
Value #7: 133057
Value #8: 0
【问题讨论】:
-
也许你应该尝试在你的函数中打印数组,这样你就可以使用你的 sampleSize。在主函数中,调用函数即可。
-
好主意,但程序应该单独执行所有操作,包括打印数组。 sampleSize 还可以帮助未来的操作,比如它除以另一个值的平均值,如果我把它设为全局怎么办?我可以在这里解决问题并保留这两个功能。
-
全局变量声明在函数外,可以尝试将两个函数合并为一个。
-
好的,感谢您的帮助。 XD