想写一个变长参数列表的函数,我想把包括第一个参数在内的参数做同样处理,比如赋值。比如我写一个函数func,功能是把第1个参数到第N个参数一次赋值1~n。第1个参数fmt,我把它单独赋值1。程序如下,编译通过,运行出错。
#include <stdio.h>
#include <stdarg.h>
void func(int *fmt,...)
{
va_list ap;
int i=1,*ival;
va_start(ap,fmt);
*fmt=i++;
while((ival=va_arg(ap,int *))!=NULL)
{
*ival=i++;
}
va_end(ap);
}
int main()
{
int a,b,c,d;
func(&a,&b,&c,&d);
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
#include <stdio.h>
#include <stdarg.h>
void func(int *fmt,...)
{
va_list ap;
int i=1,*ival;
va_start(ap,fmt);
*fmt=i++;
while((ival=va_arg(ap,int *))!=NULL)
{
*ival=i++;
}
va_end(ap);
}
int main()
{
int a,b,c,d;
func(&a,&b,&c,&d);
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}