将可变长度参数传递给函数而不检查它的长度?
问题描述:
我可以在不检查长度的情况下将可变长度参数传递给函数! 这就是我可以做一个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];
}
}
这不是基于VAR-ARGS。 –
不,它不是。但它有效,而且我多次看到它在行动。 –
另外,这不会编译。 'args [i]'是'char'类型的;你不能把它分配给'p'。 –