我在参数列表中调用va_arg时尝试访问下一个或上一个元素。 " N"实际上是参数列表的长度。
va_list pointer;
va_start(pointer, n);
int temp = va_arg(pointer, int);
...
if(temp < va_arg(pointer, int))...
...
void va_end(va_list pointer)
实际上可以交换参数列表的两个位置吗? 同样的事情就像在bubblesort中交换两个整数一样。
答案 0 :(得分:2)
从va_*
“函数”获得的“列表”(它们通常被实现为预处理器宏)是堆栈的一部分,作为一个真正的堆栈,你只能“弹出”它的值
所以不,你不能“交换”价值,或倒退。你甚至不能“推”值,只能“弹出”。
如果要交换值,则必须将两个值都放入变量中,并交换这些变量的值。