一个简单的可变参数的函数的例子:
#include
#include
void Func(int count, ...) //可变形参的函数的定义
{
va_list ap;
int n = count; //使用count来表示后面的参数个数
char *s = NULL;
int d = 0;
double f = 0.0;
va_start(ap, count); // 从第二个形参开始读取
s = va_arg(ap, char*); //为形参指定类型char*
d = va_arg(ap, int); //为形参指定类型int
f = va_arg(ap, double); //为形参指定类型double
va_end(ap); //读取形参结束
printf( "%s %d %f ", s, d, f); //这里可以做想要的功能了。
}
main()
{
Func(3, "Hello", 345, 788.234);
}
一般在传递实参的时候,可以是常量类型、或者地址指针的方式,如果以地址的方式传参的话,参数的数量就是可以任意变的,而数组也是地址,比如你在传一个数组的时候,就需要另一个整形参数来记录这次数组中含有几个有效参数。
比如printf();
参数列表就是一个可变参数