va_end() 是在 stdarg.h 头文件中定义的一个**宏**。这个**宏**帮助函数使用可变参数,用于从 va_start() 宏返回。如果在从函数返回之前没有调用 va_end,结果将未定义。
void va_end(va_list ap); #where ap is the object of va_list
va_end() 函数接受一个参数。
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| ap | 由 va_start 宏初始化的 va_list 对象 | 必需 |
宏 va_end() 不返回任何值。此宏用于终止使用 'ap' 指向的可变长度参数列表。
#include <stdio.h>
#include <stdarg.h>
int getmul(int, ...);
int main () {
printf("13 * 14 = %d\n", getmul(2, 13, 14) );
return 0;
}
int getmul(int num_args, ...) {
int value = 1;
va_list ap;
int k;
va_start(ap, num_args);
for(k = 0; k < num_args; k++) {
value *= va_arg(ap, int);
}
va_end(ap);
return value;
}
输出
13 * 14 = 182
#include <stdio.h>
#include <stdarg.h>
int getmul(int, ...);
int main () {
printf("10 * 12 * 8 = %d\n", getmul(3, 10, 12, 8) );
return 0;
}
int getmul(int num_args, ...) {
int value = 1;
va_list ap;
int k;
va_start(ap, num_args);
for(k = 0; k < num_args; k++) {
value *= va_arg(ap, int);
}
va_end(ap);
return value;
}
输出
10 * 12 * 8 = 960