将可变长度参数传递给函数而不检查它的长度?

问题描述:

我可以在不检查长度的情况下将可变长度参数传递给函数! 这就是我可以做一个List或别人的东西,并将其传递给一个可变长度的参数函数。 我知道我们可以通过va_list来实现这个功能; 但现在,我们得到一个参数列表,我们需要计算长度,然后也许我们应该定义一些变量,并通过它们, 我们可以让它更方便吗?将可变长度参数传递给函数而不检查它的长度?

您可以随时在表明它完成了列表的末尾添加一个特殊的“标志物”的说法,像NULL

char **args = { "one", "two", NULL } 
function(args); 
... 
void function (char **args) { 
    char *p; 
    int i = 0; 
    p = args[i]; 
    while(p != NULL) { 
    ... 
    i++; 
    p = args[i]; 
    } 
} 
+0

这不是基于VAR-ARGS。 –

+0

不,它不是。但它有效,而且我多次看到它在行动。 –

+0

另外,这不会编译。 'args [i]'是'char'类型的;你不能把它分配给'p'。 –