#include<stdio.h>#include<stdarg.h>intsum(int n,...){int ans =0;
va_list arg =NULL;va_start(arg, n);for(int i =0; i < n; i++){
ans +=va_arg(arg,int);}va_end(arg);return ans;}intmain(){printf("%d\n",sum(1,10));printf("%d\n",sum(2,10,20));return0;}
实现一个简单的printf
#include<stdio.h>#include<stdarg.h>voidmyprintf(charconst*fmt,...){
va_list arg =NULL;va_start(arg, fmt);charconst*p,*tmp;char c;int num;double d;for(p = fmt;*p; p++){if(*p !='%'){putchar(*p);continue;}switch(*++p){case'd':
num =va_arg(arg,int);printf("%d",num);break;case's':for(tmp =va_arg(arg,char*);*tmp; tmp++)putchar(*tmp);break;case'f':
d =va_arg(arg,double);printf("%lf",d);break;default:putchar(*p);break;}}va_end(arg);}intmain(){myprintf("%d\n",10);myprintf("hello %s","world!");return0;}