为啥我的 C 函数不打印任何内容?
Posted
技术标签:
【中文标题】为啥我的 C 函数不打印任何内容?【英文标题】:Why does my C function doesny print anything?为什么我的 C 函数不打印任何内容? 【发布时间】:2022-01-09 07:26:37 【问题描述】:这是我的主要功能:
void arrCalc(int*, int, int*, int*, int*, double*, int*);
int main()
int a[5] = 1, 2, 3, 4, 5, n = 5, *max, *min, *sum, *isEven;
double *avg;
arrCalc(a, n, max, min, sum, avg, isEven);
printf("%d %d %d %lf %d", *max, *min, *sum, *avg, *isEven);
return 0;
这是我的任务:
void arrCalc(int *arr, int n, int *max, int *min, int *sum, double *avg, int *isEven)
int i;
*min = arr[0];
*max = arr[0];
for (i = 0; i < n; i++)
if (arr[i] < *min)
*min = arr[i];
if (arr[i] > *max)
*max = arr[i];
if (!(arr[i] % 2))
*isEven = 1;
*sum += arr[i];
*avg = (double) *sum / n;
当我运行程序时,它什么也没打印出来。我认为它与 arrCalc 中的 min 和 max 的定义有某种联系。有人可以更正我的代码吗?
【问题讨论】:
当然……你重新定义了min
(还有max
)
可能不是您的主要问题,但在行尾打印换行符不会有什么坏处:printf("%d %d %d %lf %d\n"
【参考方案1】:
在main()
中,您将min
、max
、sum
和isEven
声明为int*
,但您没有为实际的int
分配任何空间重新应该指向。您应该在 main 中将这些变量声明为 int
,然后将指向它们的指针传递给您的 arrCalc
函数,如下所示:
int main()
int a[5] = 1, 2, 3, 4, 5, n = 5, max, min, sum, isEven;
double avg;
arrCalc(a, n, &max, &min, &sum, &avg, &isEven);
printf("%d %d %d %lf %d", max, min, sum, avg, isEven);
return 0;
【讨论】:
以上是关于为啥我的 C 函数不打印任何内容?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的代码没有过滤并且仍然打印列中的所有内容而不是应该过滤的内容?
为啥 logcat 在我的 Android 中不显示任何内容?