目录

void va_start(va_list ap, last_arg)

描述 (Description)

C库宏void va_start(va_list ap, last_arg)初始化要与va_argva_end宏一起使用的ap变量。 last_arg是传递给函数的最后一个已知固定参数,即省略号之前的参数。

必须在使用va_argva_end之前调用此宏。

声明 (Declaration)

以下是va_start()宏的声明。

void va_start(va_list ap, last_arg);

参数 (Parameters)

  • ap - 这是va_list的对象,它将保存使用va_arg检索其他参数所需的信息。

  • last_arg - 这是传递给函数的最后一个已知固定参数。

返回值 (Return Value)

NA

例子 (Example)

以下示例显示了va_start()宏的用法。

#include<stdarg.h>
#include<stdio.h>
int sum(int, ...);
int main(void) {
   printf("Sum of 10, 20 and 30 = %d\n",  sum(3, 10, 20, 30) );
   printf("Sum of 4, 20, 25 and 30 = %d\n",  sum(4, 4, 20, 25, 30) );
   return 0;
}
int sum(int num_args, ...) {
   int val = 0;
   va_list ap;
   int i;
   va_start(ap, num_args);
   for(i = 0; i < num_args; i++) {
      val += va_arg(ap, int);
   }
   va_end(ap);
   return val;
}

让我们编译并运行上述程序以产生以下结果 -

Sum of 10, 20 and 30 = 60
Sum of 4, 20, 25 and 30 = 79
↑回到顶部↑
WIKI教程 @2018