va_start,va_list,va_end和可变参的一个例子

//可变参的例子 #include <stdio.h> #include <stdarg.h> /*int add(int last, ...) { va_list ap; va_start(ap, last); int sum=0; while( last-- ) { sum+=va_arg(ap, int); } va_end(ap); return sum; }*/ void myprintf(const char* format, ...) { va_list ap; va_start(ap, format); while( '/0'!=*format ) { if( '%'==*format ) { if( 'd'==*(format+1) ) { printf("%d/n", va_arg(ap, int)); } else if( 's'==*(format+1) ) { printf("%s/n", va_arg(ap, char*)); } else if( 'c'==*(format+1) ) { printf("%c/n", va_arg(ap, int)); } } format++; } va_end(ap); } int main(int argc, char *argv[]) { int i=100; char c='A';  

 

运行结果:

100

A

hello world!

你可能感兴趣的:(va_start,va_list,va_end和可变参的一个例子)