C++可变参数输出结果错误?-灵析社区

万码JFG3236P

如下代码为什么输出的结果不是1,2,3,4? 而是输出了错误的结果:1803629872 77304476 1803629872 0 ``` c++ #include #include // 函数:打印可变参数的值 void printValues(int count, ...) { va_list args; va_start(args, count); for (int i = 0; i < count; ++i) { int value = va_arg(args, int); std::cout << value << " "; } va_end(args); } // 函数:将可变参数传递给另一个带有可变参数的函数 void processValues(int count, ...) { va_list args; va_start(args, count); printValues(count, args); va_end(args); } ```

阅读量:192

点赞量:0

问AI
printValues 期望后面是一堆 int ,但是传给它的是一个 va_list 。va_list 不是 int,当然就不对了。 如果想想现在这样调用,那么 printValues 的参数就应该是 va_list args ,而不是 ... 。 printValues(int count, va_list args) C 的 printf 就有 v 系列函数,比如: int vprintf(const char *format, va_list arg); 就是用 va_list 作为参数。