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_*
宏;否则,您将不得不遍历列表,直到找到您想要的参数。
我已经搜索了正确的语法来访问 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_*
宏;否则,您将不得不遍历列表,直到找到您想要的参数。