📜  如何计算C中可变数量的参数?

📅  最后修改于: 2021-05-26 01:53:41             🧑  作者: Mango

C支持可变数量的参数。但是没有提供语言来找出传递的参数总数。用户必须通过以下方式之一来处理此问题:
1)通过传递第一个参数作为参数计数。
2)通过将最后一个参数传递为NULL(或0)。
3)使用类似printf(或scanf)的机制,其中第一个参数对其余参数具有占位符。

以下是使用第一个参数arg_count来保存其他参数的计数的示例。

#include 
#include 
  
// this function returns minimum of integer numbers passed.  First 
// argument is count of numbers.
int min(int arg_count, ...)
{
  int i;
  int min, a;
    
  // va_list is a type to hold information about variable arguments
  va_list ap; 
  
  // va_start must be called before accessing variable argument list
  va_start(ap, arg_count); 
     
  // Now arguments can be accessed one by one using va_arg macro
  // Initialize min as first argument in list   
  min = va_arg(ap, int);
     
  // traverse rest of the arguments to find out minimum
  for(i = 2; i <= arg_count; i++) {
    if((a = va_arg(ap, int)) < min)
      min = a;
  }   
  
  //va_end should be executed before the function returns whenever
  // va_start has been previously used in that function 
  va_end(ap);   
  
  return min;
}
  
int main()
{
   int count = 5;
     
   // Find minimum of 5 numbers: (12, 67, 6, 7, 100)
   printf("Minimum value is %d", min(count, 12, 67, 6, 7, 100));
   getchar();
   return 0;
}

输出:
最小值为6

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。