【问题标题】:Variable number arguments in a c function [duplicate]c函数中的可变数字参数[重复]
【发布时间】:2012-11-19 10:01:04
【问题描述】:

可能重复:
C/C++: Passing variable number of arguments around

如何实现具有可变数量参数的函数。 例如:

      typedef enum{
              Circle, /* has an int argument (int colour)*/
              Square /* has a char argument (char name)*/
      }things;

      /* if arg is a ball I want an int (with colour) argument in f*/
      /* if arg is a square I want a char (with name) argument in f*/
      void f (things arg, ...){
      }

这可以在同一个函数 f 中完成吗?谢谢

【问题讨论】:

标签: c


【解决方案1】:

是的。这是一个example 是如何完成的。

【讨论】:

    【解决方案2】:

    这是一个example,它完成了,它找到了一个可变数字的最大值。

    #include <stdlib.h>
    #include <stdarg.h>
    #include <stdio.h>
    
    int maxof(int, ...) ;
    void f(void);
    
    main(){
            f();
            exit(EXIT SUCCESS);
    }
    
    int maxof(int n args, ...){
            register int i;
            int max, a;
            va_list ap;
    
            va_start(ap, n args);
            max = va_arg(ap, int);
            for(i = 2; i <= n_args; i++) {
                    if((a = va_arg(ap, int)) > max)
                            max = a;
            }
    
            va_end(ap);
            return max;
    }
    
    void f(void) {
            int i = 5;
            int j[256];
            j[42] = 24;
            printf("%d\n",maxof(3, i, j[42], 0));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-10
      • 2017-07-05
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2023-01-31
      相关资源
      最近更新 更多