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

C支持可变数量的参数。但是没有提供语言来找出传递的参数总数。

用户必须通过以下方式之一来处理此问题:

1)通过传递第一个参数作为参数计数。

2)将最后一个参数传递为NULL(或0)。

3)使用类似printf(或scanf)的机制, 其中第一个参数对其余参数具有占位符。

以下是使用第一个参数的示例arg_count保留其他参数的数量。

#include <stdarg.h>
#include <stdio.h>
  
// 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

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

来源:

https://www.srcmini02.com/68490.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?