在C中使用varargs

时间:2013-12-07 10:45:54

标签: c variadic-functions

Herevarargs的示例。

我有点困惑。

[x]问题1:如何获得n th 参数?

va_list ap;
va_arg (ap + (n-1), int); // **INCORRECT USAGE**

这是对的吗?如果没有,如何获得n th 参数?

[x]问题2:ap什么时候会增加?

It says ap会增加到下一个参数,但如果我使用va_arg(ap + (n-1), int), n>=2ap会增加吗?

问题3:(BTW /可能是偏离主题的)什么是缩写的?

有时,我们宣称Cnt缩写为CountCounter

ap缩写为什么?

问题4:哪种类型是ap

我知道它是va_list类型,但是什么是va_list?结构?诠释?或其他什么?

感谢。

1 个答案:

答案 0 :(得分:6)

如果您想要第n个参数,则必须使用正确类型调用va_arg() n-1次。

您的示例1和2是错误的。 ap会自动更改va_arg()

va_list的类型是实现定义的,但通常是char*