gpt4 book ai didi

c - 将 scanf 条目传递给 stdarg 函数

转载 作者:行者123 更新时间:2023-11-30 18:48:20 25 4
gpt4 key购买 nike

我正在尝试编写一个使用 vararg 函数计算 n 个数字的平均值的程序

average(int numberOfValues, ...);

其中条目是要获取平均值的值的数量和值本身 (...)。

问题是:我可以制定一个例程来从 scanf 获取这些值吗?我想构建一个具有 numberOfValues 大小的数组,然后调用 vararg 函数,但我无法为函数传递数组(至少不能传递指针)。我即将得到答案吗?我还考虑将 numberOfValues 和值作为主函数参数传递(至少用于测试)来解决这个问题。

最佳答案

你当然可以做类似的事情

int a, b, c;
scanf("%d%d%d", &a, &b, &c);
average(3, a, b, c);

或者也许

int a[3];
scanf("%d%d%d", &a[0], &a[1], &a[2]);
average(3, a[0], a[1], a[2]);

但是,如果您不知道(直到用户输入它们)会有多少个值,那么是的,您可能想将它们存储在数组中,但是不,计算平均值的 varargs 函数不会出现变得有用。

可变参数函数(至少是传统函数)的一个限制是参数的数量(即对于特定调用)必须在编译时始终已知。

所以,你可能想写

average(int numberOfValues, int theValues[])
{
/* ... */
}

您将值作为数组传递,而不是作为变量参数列表。这可能会更容易编写,而且更普遍有用。

关于c - 将 scanf 条目传递给 stdarg 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46245590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com