重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一个简单的可变参数的函数的例子:
我们提供的服务有:成都网站制作、成都网站设计、微信公众号开发、网站优化、网站认证、曹县ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的曹县网站制作公司
#include stdio.h
#include stdarg.h
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);
}
有专门的宏,处理可变参
void va_start( va_list arg_ptr, prev_param );
type va_arg( va_list arg_ptr, type );
void va_end( va_list arg_ptr );
一个简单的例子
void simple_va_fun(int i, ...)
{
va_list arg_ptr;
int j=0;
va_start(arg_ptr, i);
j=va_arg(arg_ptr, int);
va_end(arg_ptr);
printf("i=%d j=%d\bn", i, j);
return;
}
int main()
{
simple_va_fun(1);
simple_va_fun(1,2);
simple_va_fun(1,200);
return 0;
}
#include stdarg.h //可变参数函数必要的头文件
#include stdio.h
long int sum(unsigned int argc,...) //可变参数函数必须包含至少一个确定的参数
{
long int srt=0;
int va;
unsigned int i;
va_list vl; //用于指向可变参数列表
va_start(vl,argc); //初始化,va_start()调用的第一个参数是所编写的可变参数函数的最后一个确定的参数
for (i = 0; iargc; i++) {
srt+=(int)va_arg(vl,int); //从参数列表按提取一个int类型的值参与相加运算
}
va_end(vl); //清理
return srt;
}
int main(int argc, char* argv[])
{
printf("%ld\n",sum(3,1,2,3));
return 0;
}
定义如下:
函数返回值 函数名(形参1, 形参2, ...)
举例说明:
int func(int a, int b, ...)
{
//函数体
......
}
printf()函数就是一个参数可变的函数,其函数原型为:
int printf (const char *__format, ...);