//可变参数列表
#include<stdio.h>
#include<stdarg.h>
double Ave(int num,...){
int i = 0;
double sum = 0.0;
va_list arg;
va_start(arg, num);
for (i = 0; i < num; i++){
sum += va_arg(arg, double);
}
va_end(arg);
return sum / num;
}
int main(){
double ret = Ave(3, 4.5, 4.4, 4.3);
printf("ret = %lf\n",ret);
system("pause");
return 0;
}
//模拟printf
//print("val:ccc s\n",'b','i','t',"hello");
#include<stdio.h>
#include<stdarg.h>
void Print(const char* str, ...){
char *p = NULL;
va_list arg;
va_start(arg,str);
while (*str){
switch (*str){
case 'c': putchar(va_arg(arg, char)); break;
case 's': p=va_arg(arg, char *);
while (*p){
putchar(*p);
p++;
}
break;
default: putchar(*str); break;
}
str++;
}
va_end(arg);
}
int main(){
Print("val:ccc s\n",'b','i','t',"hello");
system("pause");
return 0;
}