c函数中的变量数参数

c函数中的变量数参数,c,C,可能重复: 如何处理参数数目可变的函数。 例如: 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*/

可能重复:

如何处理参数数目可变的函数。 例如:

      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中是否可以这样做?谢谢

是的。这是一个如何完成的示例。

这是一个it is done,它查找可变数量的数字的最大值

#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));
}
#包括
#包括
#包括
int maxof(int,…);
无效f(无效);
main(){
f();
退出(退出成功);
}
intmaxof(intn参数,…){
寄存器int i;
int max,a;
va_列表ap;
va_启动(ap,n参数);
max=va_arg(ap,int);
对于(i=2;i最大值)
max=a;
}
va_端(ap);
返回最大值;
}
无效f(无效){
int i=5;
int j[256];
j[42]=24;
printf(“%d\n”,maxof(3,i,j[42],0));
}

您是否检查了此项:-?@Zeta问题在于将变量参数传递给另一个函数,而不是如何首先获取变量参数。