#include "stdarg.h" void vtest(int count, ...); void print(int fixed, ...); void print2(int fixed, ...); int main() { vtest(4, 1, 2, 3, 2); print(1, "Hello"); print2(1, "Hello"); return 0; } void sum(int count, va_list args) { int i, result = 0; for (i = 0; i < count; i++) { result += va_arg( args, int ); } putchar('0' + result); } void print(int count, ...) { int i; va_list args; va_start( args, count); for (i = 0; i < count; i++) { puts( va_arg(args, char *)); } } void printv(int count, va_list args) { int i; for (i = 0; i < count; i++) { char* s = va_arg(args, char *); puts(s ? s : "NULL"); } } void print2(int count, ...) { va_list args; va_start( args, count); printv(count, args); } void vtest(int count, ...) { va_list args; va_start( args, count); sum(count, args); }