c - 将可变参数列表传递给子函数

标签 c variadic-functions

编辑:恐怕我还不清楚。

我想要的是将可变参数列表的(部分或全部)传递给子函数,而不必传递所有可变参数。

我做了一些研究(试错)并找到了解决方案,我将其作为答案发布。

我已经删除了原来的问题,因为它不清楚。感谢您的评论,帮助我找到了自己想法中的错误。

最佳答案

下面是一个主要的测试函数。它调用一个可以接受可变数量参数的函数。该函数依次调用子函数来完成工作。它通过参数列表传递,但不是通过传递参数而是通过传递可变参数列表的地址。然后它处理这个列表:

void va_test1(int n,...);
void va_test2(int n, va_list argptr);

int va_main(void)
{
    va_test1(5, 1,2,3,4,5);
    return(1);
}
void va_test1(int n,...)
{
    va_list argptr;

    va_start (argptr, n);
    va_test2 (n, argptr);
    va_end (argptr);
}
void va_test2(int n, va_list argptr)
{
    int i;
    for (i=0;i<n;i++)
        printf("%d\n", va_arg( argptr, int ));
}

关于c - 将可变参数列表传递给子函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33468879/

相关文章:

arrays - 为什么我不能在 Swift 中将数组传递给可变参数?

c++ - 从 this->class 构造函数调用类构造函数(不同的参数)?

c - 扫描输入到链表

android - 如何在编译android内核期间修复函数的隐式声明

c - 无法找出C程序崩溃的原因

c - 如何在 C 中移植打印 int64_t 类型

c - 为什么我不能在 C 中仅使用 1 个相等运算符来检查多个条件?

go - slice slice 的拆包

postgresql - 以 VARIADIC 数组作为参数的 PL/Python3

c++ - 显式实例化可变参数构造函数 : template-id does not match any template declaration