Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中参数的可变数量?_C_Function_Arguments_Parameter Passing - Fatal编程技术网

C中参数的可变数量?

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

我遇到了一个问题,即在C中向函数传递可变数量的参数。 问题是这样的:

编写一个函数,该函数接受代表英语学生分数的可变数量的参数 并返回得分>90分的学生数。 例如:variableArguments(3,20,90,98)返回1。一个值(98)大于90

第一个参数是学生分数的数量(arg_count),后面是参数的数量“arg_count”。 例如:如果函数的第一个参数是5,则函数的参数总数将是6(1+5)

结果值应为“1”,因为大于90的参数数为1

在函数的原型中,第一个参数是
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参数;感谢您提供这段代码片段,它可能会提供一些即时帮助。通过说明为什么这是一个很好的解决问题的方法,正确地解释它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请在回答中添加解释,并说明适用的限制和假设。请避免只给出代码答案,而是解释解决方案。另外, CUT是C++构造,这是C问题。
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;
}