c - C : increment/decrement va_arg? 中的参数列表

标签 c variadic-functions

在参数列表中调用 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)

实际上可以交换参数列表的两个位置吗? 就像在冒泡排序中交换两个整数一样。

最佳答案

您从 va_*“函数”(它们通常作为预处理器宏实现)中获得的“列表”是堆栈的一部分,作为真正的堆栈,您只能“弹出” "它的值(value)。

所以不,你不能“交换”值,或者倒退。您甚至不能“插入”值,只能“弹出”。

如果要交换值,则必须将两个值都放入变量中,然后交换这些变量的值。

关于c - C : increment/decrement va_arg? 中的参数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088609/

相关文章:

c++ - va_arg 给出运行时错误

c++ - 为什么 printf() 将 float 提升为 double ?

Kotlin ...在函数参数中,例如来自 Java - setFilterById(long...ids)

haskell - Haskell printf 是如何工作的?

c - 如何找到 while 循环的时间复杂度(Big O)?

c - 在c中重新填充二维数组

javascript - C 语言开发人员未能利用的 JavaScript 特性?

c++ - 杀死焦点并不是杀死焦点

c - 我需要一些关于在 C 中实现 chroot 命令的技巧

java - Varargs 方法修改调用者的数组而不是它自己的副本?