C:访问第 i 个可变参数

C: Accessing the ith vararg

我已经搜索了正确的语法来访问 C 中的第 i 个变量参数,但无济于事。这可能吗?我想访问可变参数列表中的第二个参数。

例如:

void mySum( int count, ... )
{
    int sum = 0;
    va_list args;
    va_start(args, count);
    for( int i = 0; i < count; i++ )
    {
        sum += va_arg(args, int);
    }

    printf("%d\n", sum );
 }

这将依次访问每个变量参数。有没有办法直接引用第二个变量参数,还是必须先至少调用一次 va_arg()?

您不能随机访问它们,因为参数存储在堆栈中,您需要知道所有前面参数的大小才能访问特定参数。

没有(好的、安全的、可移植的)方法来随机访问可变参数列表中的参数。如果您确切地 了解可变参数列表在您的特定平台上是如何实现的,您可以尝试绕过标准 va_* 宏;否则,您将不得不遍历列表,直到找到您想要的参数。