va_arg
Defined in header <cstdarg> | | |
|---|---|---|
T va_arg( va_list ap, T ); | | |
大va_arg宏展开为类型表达式。T的下一个参数。va_listap...
打电话前va_arg,,,ap必须通过调用va_start或va_copy,没有任何介入的电话va_end.每次调用va_arg宏修改ap指向下一个变量参数。
如果va_arg中没有更多的参数时调用ap中的下一个参数的类型ap%28升级后%29不兼容T,行为未定义,除非:
- 一种类型是有符号整数类型,另一种类型是对应的无符号整数类型,并且值在这两种类型中都是可表示的;或
- 一种类型是指向
void另一个是指向字符类型%28的指针char,,,signed char,或unsigned char29%。
参数
ap | - | an instance of the va_list type |
|---|---|---|
T | - | the type of the next parameter in ap |
扩展值
中的下一个变量参数ap...
例
二次
#include <iostream>
#include <cstdarg>
#include <cmath>
double stddev(int count, ...)
{
double sum = 0;
double sum_sq = 0;
va_list args;
va_start(args, count);
for (int i = 0; i < count; ++i) {
double num = va_arg(args, double);
sum += num;
sum_sq += num*num;
}
va_end(args);
return std::sqrt(sum_sq/count - (sum/count)*(sum/count));
}
int main()
{
std::cout << stddev(4, 25.0, 27.3, 26.9, 25.7) << '\n';
}二次
产出:
二次
0.920258二次
另见
va_start | enables access to variadic function arguments (function macro) |
|---|---|
va_copy (C++11) | makes a copy of the variadic function arguments (function macro) |
va_end | ends traversal of the variadic function arguments (function macro) |
c VA文件[医]阿格
© cppreference.com在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

