【发布时间】:2014-05-14 06:23:37
【问题描述】:
我正在阅读有关如何将可选参数传递给函数的信息。但我无法理解那些。当我看到示例时,它们令人困惑且有点复杂。所以我只是从一个非常简单的程序开始,到目前为止我已经理解了。
下面的程序只是打印变量。
void print(int x, ...)
{
va_list ap;
int i = 4; // I know I'm passing only 4 opt variables.
int num;
va_start(ap, x);
while(i--) { // How to know how many variables came in real time?
num = va_arg(ap, int);
printf("%d\n", num);
}
va_end(ap);
return;
}
int main()
{
print(1,2,3,4,5);
return 0;
}
我不知道上面的程序是否正确。但它正在工作。当我将i 值更改为5 打印垃圾时。如何知道我得到了多少个参数(比如main 中的argc)?
【问题讨论】:
-
以同样的方式知道传递给函数的数组中有多少项;你自己跟踪它,因为 C 不会为你做这件事。
-
How to know how many arguments I got (like argc in main)?- 你没有。你将它与参数一起传递。也许作为第一个论点。请不要尝试遵循您从以下答案中获得的“很棒”的想法。他们真的,真的很可怕。
标签: c optional-parameters variadic-functions