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

Kapp啊$0920

如下代码为什么输出的结果不是1,2,3,4? 而是输出了错误的结果:1803629872 77304476 1803629872 0 #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); } int main() { processValues(4, 1, 2, 3, 4); return 0; }

阅读量:16

点赞量: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" 作为参数。