69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
void print(va_list args)
{
int i;
for(i = 0; i < 5; i ++)
{
printf("%d ", va_arg(args, int));
}
va_end(args);
}
int forVaArg(int x, ...)
{
va_list args;
int i;
va_start(args, x);
print(args);
return 0;
}
int main(int argc, char *argv[])
{
forVaArg(4, 5, 5, 2, 1, 8, 9);
return 0;
}
如果注释掉va_start就会打印出错误的数据,因为找不到参数起始地址。书中估计因为篇幅的原因有部分代码省略掉了。
#include <varargs.h>
void
foo(va_alist)
va_dcl
{
va_list ap;
va_start(ap);
while (...) {
...
x = va_arg(ap, type);
...
}
va_end(ap);
}