C中参数的可变数量?
我遇到了一个问题,即在C中向函数传递可变数量的参数。 问题是这样的: 编写一个函数,该函数接受代表英语学生分数的可变数量的参数 并返回得分>90分的学生数。 例如:variableArguments(3,20,90,98)返回1。一个值(98)大于90 第一个参数是学生分数的数量(arg_count),后面是参数的数量“arg_count”。 例如:如果函数的第一个参数是5,则函数的参数总数将是6(1+5) 结果值应为“1”,因为大于90的参数数为1 在函数的原型中,第一个参数是C中参数的可变数量?,c,function,arguments,parameter-passing,C,Function,Arguments,Parameter Passing,我遇到了一个问题,即在C中向函数传递可变数量的参数。 问题是这样的: 编写一个函数,该函数接受代表英语学生分数的可变数量的参数 并返回得分>90分的学生数。 例如:variableArguments(3,20,90,98)返回1。一个值(98)大于90 第一个参数是学生分数的数量(arg_count),后面是参数的数量“arg_count”。 例如:如果函数的第一个参数是5,则函数的参数总数将是6(1+5) 结果值应为“1”,因为大于90的参数数为1 在函数的原型中,第一个参数是arg\u co
arg\u count
剩余的is参数表示为..
该..
的含义是什么?
在这个函数中,arg\u count
给出了调用函数时需要传递给函数的参数数量。
如果将此类参数传递给函数,如何访问函数定义中的参数列表?void f(int count\u arg,int*arg)
void f(int count_arg, int *arg)
{
for (int i = 0; i < count_arg; i++)
cout << arg[i] << endl;
}
//call
int a[] = { 1,2,3,4,5 };
f(5, a);
{
对于(int i=0;iintff(intnum,…)
{
va_列表参数;
整数和=0;
va_开始(参数,num);
对于(int x=0;x
va_list包含…中的参数列表,在循环中,您可以逐个访问va_arg(arguments,int);您可以这样编写,此程序将从接受变量数量参数的函数返回最大值:
#include <stdarg.h>
#include <stdio.h>
int max(int arg_count, ...)
{
int i;
int max, a;
va_list ap;
va_start(ap, arg_count);
max = va_arg(ap, int);
for(i = 2; i <= arg_count; i++) {
if((a = va_arg(ap, int)) > max)
max = a;
}
va_end(ap);
return max;
}
int main()
{
int count = 5;
printf("Max value is %d", max(count, 12, 67, 6, 7, 100));
return 0;
}
#包括
#包括
int max(int arg_count,…)
{
int i;
int max,a;
va_列表ap;
va_开始(ap、arg_计数);
max=va_arg(ap,int);
对于(i=2;i最大值)
max=a;
}
va_端(ap);
返回最大值;
}
int main()
{
整数计数=5;
printf(“最大值为%d”,最大值(计数,12,67,6,7,100));
返回0;
}
可能会有帮助。@Jean-Françoisfab不是一个有效的傻瓜。这是关于将参数传递给另一个函数的。@user694733同意。但它毕竟是复制品。谢谢您的更正。@Jean Françoisfare这怎么可能是重复的呢?我想问的是…
和变量的访问如果您想了解使用va_uuu宏时发生了什么。这里是一个很好的例子。这不是一个变量参数函数。这是一个只接受两个参数的函数。这个问题特别要求var args!而且还标明C不是C++。加上,这是C++不能CYou可以使用的包含和VAYLIST参数;感谢您提供这段代码片段,它可能会提供一些即时帮助。通过说明为什么这是一个很好的解决问题的方法,正确地解释它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请在回答中添加解释,并说明适用的限制和假设。请避免只给出代码答案,而是解释解决方案。另外,void f(int count_arg, int *arg)
{
for (int i = 0; i < count_arg; i++)
cout << arg[i] << endl;
}
//call
int a[] = { 1,2,3,4,5 };
f(5, a);
int ff(int num, ...)
{
va_list arguments;
int sum = 0;
va_start(arguments, num);
for (int x = 0; x < num; x++)
{
sum += va_arg(arguments, int);
}
va_end(arguments);
return sum;
}
//call
printf("%d\n", ff(3, 1, 2, 3));
#include <stdarg.h>
#include <stdio.h>
int max(int arg_count, ...)
{
int i;
int max, a;
va_list ap;
va_start(ap, arg_count);
max = va_arg(ap, int);
for(i = 2; i <= arg_count; i++) {
if((a = va_arg(ap, int)) > max)
max = a;
}
va_end(ap);
return max;
}
int main()
{
int count = 5;
printf("Max value is %d", max(count, 12, 67, 6, 7, 100));
return 0;
}